2010-10-26 24 views
3

我想創建一個事件來更改我的圖像按鈕的外觀,但僅當它被按下時。到目前爲止,我一直在使用onTouch監聽器,但這只是永久性的改變它。我找不到任何按鈕的onKyeUpListener()類型的東西。我如何設置ImageButton只在我的手指觸摸它時纔會更改

這樣的事情是否存在?

解決

final ImageButton button = (ImageButton) findViewById(R.id.ImageButton01); 

    button.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if(event.getAction() == (MotionEvent.ACTION_UP)){ 
       //Do whatever you want after press 
      } 
      else{ 
       //Do whatever you want during press 
      } 
      return true; 
     } 
    }); 

回答

2

http://developer.android.com/guide/topics/ui/ui-events.html

onTouch()...這被稱爲當用戶執行作爲一個合格的觸摸事件的動作,包括按壓,釋放,或屏幕上的任何移動手勢(在該項目的範圍內)。

換句話說,onTouch也被稱爲發佈事件。看看MotionEvent.getAction()

+0

完美。謝謝。我會在4分鐘內接受這個答案。 – NotACleverMan 2010-10-26 22:53:56

+0

與使用StateListDrawable相比,此解決方案過度(如EboMike所述)。 – 2010-10-27 19:00:57

+0

或丹尼爾。事實上,丹尼爾甚至還添加了一個鏈接。我會接受他的回答。在onTouch中手動執行它是過度殺毒和完全不可靠的。如果用戶使用軌跡球選擇按鈕會怎麼樣? – EboMike 2010-10-27 20:52:46

5

它在docs。您可以通過XML爲不同的狀態定義不同的圖像。

3

而不是手動執行它,爲什麼不改變按鈕的drawable?一般來說,drawable可以有多個狀態,所以如果你改變某些狀態的drawable(比如focus或selected),操作系統會自動處理所有的東西。

相關問題