實現按鈕按下和釋放,按鈕背景圖片相應轉場效果的方法這裡介紹兩種,一種是在代碼裡實現,另一種是在xml檔案裡實現
一、在xml檔案裡
首先現在layout的一個xml檔案下定義Button如下所示:
[html]
<Button
android:id="@+id/btn_user_selected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_selected/>
注意代碼裡的android:background="@drawable/btn_selected",這裡btn_selected是drawable檔案下定義button按下釋放效果的xml檔案
接下來看btn_selected.xml檔案的定義:
[html]
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 獲得焦點但未按下時的背景圖片 -->
<item android:state_focused="true" android:state_enabled="true" android:state_pressed="false" android:drawable="@drawable/user_selecte_n" />
<!-- 按下時的背景圖片 -->
<item android:state_enabled="true" android:state_pressed="true" android:drawable="@drawable/user_selecte_p" />
<!-- 按下時的背景圖片 -->
<item android:state_enabled="true" android:state_checked="true" android:drawable="@drawable/user_selecte_p" />
<!-- 預設時的背景圖片 -->
<item android:drawable="@drawable/user_selecte_n" />
</selector>
建立xml:點擊drawable檔案夾右鍵-->new-->Android XML File-->在File欄裡填寫xml名稱-->Root Element下選擇xml的背景選取器selector-->點擊finish-->建立成功
相關屬性:
android:state_selected :選中
android:state_focused :獲得焦點
android:state_pressed :點擊
android:state_enabled :設定是否響應事件,指所有事件
selector背景選取器用法大全請跳轉到:點擊開啟連結
二、在java代碼裡
[java]
bottomReturnBtn.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
Button upStepBtn = (Button) v;
if(event.getAction() == MotionEvent.ACTION_DOWN){
upStepBtn.setBackgroundResource(R.drawable.bottom_sub_order_btn);
}else if(event.getAction() == MotionEvent.ACTION_UP){
upStepBtn.setBackgroundResource(R.drawable.bottom_return_check);
finish();
}
return false;
}
});
通過監聽按鈕的不同狀態來更改按鈕的背景圖片
public boolean onTouch(View v,MotionEvent event){
}
參數v:事件來源對象
參數event:事件封裝類的對象,其中封裝了觸發事件的詳細資料,同樣包括事件的類型、觸發時間等資訊。
event.getAction() == MotionEvent.ACTION_DOWN ======>按鈕被按下
event.getAction() == MotionEvent.ACTION_UP ======>按鈕被釋放