在Android中有一個ImageButton的View,跟Button按鈕的差別是可以在Imagebutton上加載一個圖檔。
從ImageButton這個字面意思上來看,它是一個圖檔按鈕,那麼我們就可以使用它做一個我們想要的圖檔按鈕了,但是我們在實際使用的過程當中,就會發現該按鈕的使用并沒有想像中的那麼簡單,需要再增加一些代碼或再配置XML才能實作圖檔按鈕按下的效果,個人感覺有點麻煩,不知道google為什麼這麼做?
下面是個圖檔按鈕正常狀态的效果:

下面是圖檔按鈕按下的效果圖檔:
我們來看一下如何實作上面的效果。
實作圖檔按鈕按下的效果有兩種方式可以實作:一是增加代碼,二配置XML。
一、在Java中為圖檔按鈕增加觸摸監聽的函數來實作圖檔切換,代碼如下:
ImageButton btn = (ImageButton)findViewById(R.id.imageButton1);
btn.setOnTouchListener(new View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
//重新設定按下時的背景圖檔
((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.android_btn_pressed));
}else if(event.getAction() == MotionEvent.ACTION_UP){
//再修改為擡起時的正常圖檔
((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.android_btn));
}
return false;
}
});
代碼比較簡單,就是當圖檔按下時,修改按鈕的背景圖檔,當擡起時再修改為正常的圖檔顯示。
二、通過給按鈕配置XML檔案來實作圖檔按鈕的背景切換效果,方法如下:
1) 在Layout下增加一個image_btn_press.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/android_btn" />
<item android:state_focused="true" android:drawable="@drawable/android_btn" />
<item android:state_pressed="true" android:drawable="@drawable/android_btn_pressed" />
</selector>
在這個檔案中可以設定按鈕圖檔的正常時的圖檔、具有焦點時的圖檔和按下時的圖檔。在本例中将按鈕的正常圖檔和焦點圖檔設定成同樣的效果了。
或者你也可以将state_focused的整個屬性行删除。
另外,該XML配置檔案不一定要存放在layout的目錄下,您也可以存放在drawable的目錄下。
2) 在main.xml中設定圖檔按鈕的屬性,裝上面的xml檔案增加到圖檔按鈕中,内容如下:
<ImageButton
android:id="@+id/imageButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@layout/image_btn_press" /> <ImageButton
android:id="@+id/imageButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@layout/image_btn_press" />
在ImageButtonk中指定background的屬性值:@layout/image_btn_press,其中image_btn_press就是上面為該圖檔铵鈕建立的XML配置檔案,檔案名不要寫錯了。同時,你也可以将image_btn_press.xml檔案放到drawable的目錄下,此時,就要将它的屬性值修改為:@drawable/image_btn_press即可,也就是說指定它的XML檔案的正确路經就行了。
另外,需要特别注意的是:在ImageButton中,如果使用XML配置檔案來設定圖檔的效果的話,就不要再指定它的android:src=""屬性值了,否則圖檔的按下效果就出不來了。
這兩種方法各有各的好處,在實際運用過種當種可以根據自己的需要進行選擇。
附上面執行個體的源代碼下載下傳:http://download.csdn.net/detail/ztp800201/4106649
該源代碼分别使用了兩種的方法實作了圖檔按鈕的效果。其中上面的圖檔按鈕是用代碼實作的,下面的圖檔是用XML實作的。
轉自:Android - ImageButton單擊切換按鈕圖檔效果的實作