有時單擊ImageButton圖檔按鈕時需要擷取變換圖檔的效果,在這裡介紹兩種方法僅供參考
正常顯示
點選切換方法一:通過給按鈕配置XML檔案來實作圖檔按鈕的背景切換效果
在layout或者是drawable檔案下添加一個p_w_picpathbtn_select.xml檔案
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@drawable/img_smile"/>
<item android:state_focused="true" android:drawable="@drawable/img_happy"/>
<item android:state_pressed="true" android:drawable="@drawable/img_love"/>
</selector>
其中的
<item android:state_focused="true" android:drawable="@drawable/img_happy"/>
是指是否取得焦點,比如使用者選擇了一個文本框。
再在main.xml檔案中設定ImageButton屬性,并引用上述檔案作為圖檔按鈕的背景
<ImageButton
android:id="@+id/p_w_picpathbtn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/p_w_picpathbtn_select"
/>
這裡千萬不能設定android:src屬性,否則将無法顯示圖檔切換效果
方法二:在java代碼中為圖檔按鈕增加觸摸監聽的函數來實作圖檔切換
final ImageButton btn = (ImageButton)findViewById(R.id.p_w_picpathbtn1);
btn.setOnTouchListener(new View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
//重新設定按下時的背景圖檔
btn.setImageResource(R.drawable.smile);
}else if(event.getAction() == MotionEvent.ACTION_UP){
//再修改為擡起時的正常圖檔
btn.setImageResource(R.drawable.love);
}
return false;
}
});
這裡講解下onClick()和onTouch()方法的差別:
onClick傳入的參數就一個onClick(View v)而 onTouch為onTouch(View v, MotionEvent event)顯然後者可以對控件有更豐富的操作,比如判斷觸摸的狀态(比如按下,或者放開),和得到點選的位置等等,是以可以通過觀察方法參數來推測方法的使用
利用MotionEvent.getAction()函數判斷使用者觸發事件的類型,有2種類型:
1、MotionEvent.ACTION_DOWN 按下事件
2、MotionEvent.ACTION_UP 擡起事件
通過event.getAction()來擷取使用者的動作 ,
根據事件的不同通過調用setImageResource()來設定背景圖檔即可。