開始之前我們必須說清楚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;
}
}
}`