Selector里面使用shape

开始之前我们必须说清楚selector和shape干什么用的。
selector(选择器):当我们点击一个按钮的时候,要显示的是点击后的背景或者点击时的背景,这个时候的不同的状态需要显示不同的背景,就需要selector来选择对应的背景。
shape(图形):显示比较规则的图形,作为按钮的背景,详细了解可以看上一片博客Android中shape的使用

通常我们使用selector的时候,里面会设置一个选中状态,和一个未选中状态,然后放两张不同的图片,这是非常常见的方法,但是在有些情况下当背景图片非常规则的情况下,也就是直接可以将图片换成shape来取代。

1.selector常见几种状态
(1)state_pressed:按钮按下去一瞬间的状态,擡起来后回到初始状态
(2)state_selected:按钮按下去后显示的状态,不会回到初始状态
(3)state_focused:获得焦点时候的状态

2.下面做简单的小例子
初始状态
点击【按钮一】之后

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--选中状态-->
<item android:state_selected="true">
    <shape  >

        <stroke android:color="#000000"
            android:width="1dp"/>
        <solid android:color="#ff0000"></solid>
        <corners android:radius="10dp"/>
        <padding
            android:bottom="10dp"
            android:left="10dp"
            android:right="10dp"
            android:top="10dp"/>

    </shape>
</item>
<!--正常状态-->
<item >
    <shape >
        <stroke android:color="#000000"
            android:width="1dp"
            />
        <gradient android:startColor="#00ff00"
            android:endColor="#0000ff"
            android:angle="45"></gradient>
        <corners android:radius="10dp"/>
        <padding
            android:bottom="10dp"
            android:left="10dp"
            android:right="10dp"
            android:top="10dp"/>
    </shape>

</item>

</selector>

android代码就非常简单了!
`public class MainActivity extends AppCompatActivity implements View.OnClickListener{

Button btn1;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn1 = (Button) findViewById(R.id.button1);
    btn1.setOnClickListener(this);
    btn2 = (Button) findViewById(R.id.button2);
    btn2.setOnClickListener(this);

}

@Override
public void onClick(View view) {

    switch(view.getId()){
        case R.id.button1:
        //一定要设置是选中的状态(当然也可以设置为未选中的状态)
            btn1.setSelected(true);
            break;
        case R.id.button2:
        //一定要设置是选中的状态
            btn2.setSelected(true);
            break;
    }
}

}`

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章