ImageButton 點擊反饋

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單擊切換按鈕圖片效果的實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章