Android_UI_點擊按鈕切換背景效果實現

來源:互聯網
上載者:User

實現按鈕按下和釋放,按鈕背景圖片相應轉場效果的方法這裡介紹兩種,一種是在代碼裡實現,另一種是在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                ======>按鈕被釋放

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.