Android自定義Button的點擊效果

在項目開發中,經常碰到按鈕點擊,可是如果不添加任何效果,按鈕是否點擊都是看不出來的。於是我們需要在按鈕點擊時改變按鈕的背景圖片或者其顏色。這裏給出兩種實現方法。

     第一種,是通過在drawable新建selector.xml文件,在裏面可以實現自己所需要的點擊效果。給出示例代碼:

[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:drawable="@drawable/button_press" android:state_pressed="true"></item>  
  4.     <item android:drawable="@drawable/button_normal" android:state_focused="false" android:state_pressed="false"></item>  
  5.     <item android:drawable="@drawable/button_normal" android:state_focused="true"></item>  
  6.     <item android:drawable="@drawable/button_normal" android:state_focused="false"></item>  
  7. </selector>  

當按下狀態爲true,其通過android:state_pressed="true"來定義。相對應的按下去的圖片爲button_press.當不是按下狀態時,即android:state_pressed="false"時,設置其圖片爲button_normal.

參看如下圖片:


接下來只需要在佈局文件中設置Button的屬性爲:

[java] view plaincopy
  1. android:background="@drawable/selector"  

這樣就實現了按鈕的按下時其會改變背景圖片。


第二種實現方法:

[java] view plaincopy
  1. Button button=(Button) this.findViewById(R.id.button);  
  2.        button2.setOnTouchListener(new OnTouchListener() {  
  3.           
  4.         @Override  
  5.         public boolean onTouch(View v, MotionEvent event) {  
  6.             // TODO Auto-generated method stub  
  7.             if(event.getAction()==MotionEvent.ACTION_DOWN){  
  8.                 v.setBackgroundResource(R.drawable.button_press);  
  9.             }else if(event.getAction()==MotionEvent.ACTION_UP){  
  10.                 v.setBackgroundResource(R.drawable.button_nomal);  
  11.             }  
  12.             return false;  
  13.         }  
  14.     });  

這樣實現不過代碼就比較冗餘了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章