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;
    }
}

}`

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