在項目開發中,經常碰到按鈕點擊,可是如果不添加任何效果,按鈕是否點擊都是看不出來的。於是我們需要在按鈕點擊時改變按鈕的背景圖片或者其顏色。這裏給出兩種實現方法。
第一種,是通過在drawable新建selector.xml文件,在裏面可以實現自己所需要的點擊效果。給出示例代碼:
- <?xml version="1.0" encoding="utf-8"?>
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:drawable="@drawable/button_press" android:state_pressed="true"></item>
- <item android:drawable="@drawable/button_normal" android:state_focused="false" android:state_pressed="false"></item>
- <item android:drawable="@drawable/button_normal" android:state_focused="true"></item>
- <item android:drawable="@drawable/button_normal" android:state_focused="false"></item>
- </selector>
當按下狀態爲true,其通過android:state_pressed="true"來定義。相對應的按下去的圖片爲button_press.當不是按下狀態時,即android:state_pressed="false"時,設置其圖片爲button_normal.
參看如下圖片:
接下來只需要在佈局文件中設置Button的屬性爲:
- android:background="@drawable/selector"
這樣就實現了按鈕的按下時其會改變背景圖片。
第二種實現方法:
- Button button=(Button) this.findViewById(R.id.button);
- button2.setOnTouchListener(new OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- // TODO Auto-generated method stub
- if(event.getAction()==MotionEvent.ACTION_DOWN){
- v.setBackgroundResource(R.drawable.button_press);
- }else if(event.getAction()==MotionEvent.ACTION_UP){
- v.setBackgroundResource(R.drawable.button_nomal);
- }
- return false;
- }
- });
這樣實現不過代碼就比較冗餘了。