AndroidのUI之Spinner箭头效果

来源:互联网 发布:网上淘宝贷款是真的吗 编辑:程序博客网 时间:2024/05/16 14:23

先上图:

点击张开,再点击收回。一开始,还以为有多复杂,原来就两下搞定。

我们知道Button可以有好多state.pressed/clicked/checked等,实现点击效果,就用state_list _drawable(忘了叫什么,反正意识差不多)好,而箭头呢?

这个就麻烦了,首先你想到肯定是drawableRight属性,但是要和selector配合,还是难以实现。所以只要把箭头切换放在代码里面就行了。

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/hello" />        <Button android:id="@+id/bt"        android:text="开始"        android:textColor="#fff"        android:textSize="20sp"        android:background="@drawable/bt_bg"         android:layout_width="100dp"        android:layout_height="50dp"        />    </LinearLayout>

bt_bg.xml

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" >        <item android:state_pressed="true" >                <shape>            <solid android:color="#001122"/>        </shape>            </item>    <item  >                <shape>            <solid android:color="#221100"/>        </shape>            </item></selector>

MainActivity.java

package com.bvin.del;import android.app.Activity;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;public class MainActivity extends Activity {    /** Called when the activity is first created. */    Button bt;    boolean btIsOpen = false;    Drawable arrowUp,arrowDown;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        initRes();        initViews();    }        void initRes(){//        arrowUp = getResources().getDrawable(R.drawable.ic_arrow_up_black);        arrowDown = getResources().getDrawable(R.drawable.ic_arrow_down_black);                arrowUp.setBounds(0, 0, arrowUp.getMinimumWidth(), arrowUp.getMinimumHeight());        arrowDown.setBounds(0, 0, arrowUp.getMinimumWidth(), arrowUp.getMinimumHeight());    }        void initViews(){        bt = (Button)findViewById(R.id.bt);        bt.setCompoundDrawables(null, null, arrowDown, null);        bt.setOnClickListener(new View.OnClickListener() {                        @Override            public void onClick(View v) {                // TODO Auto-generated method stub                if(btIsOpen){//打开状态                    Log.e("开关", "关闭");                    bt.setText("关闭");                    bt.setCompoundDrawables(null, null,arrowDown , null);                    btIsOpen = false;                }else {//默认状态                    Log.e("开关", "打开");                    bt.setText("打开");                    bt.setCompoundDrawables(null, null, arrowUp, null);                    btIsOpen = true;                }            }        });    }}

 

原创粉丝点击