2014-10-17 71 views
0

我正在嘗試一些功能和基本學習的東西,我不知道爲什麼這不起作用。我的意思是,當我第一次將圖像更改變爲R.drawable.buttondown時,但是當我移動手指或釋放它時,其他情況不起作用,並且圖像不再改變。你能告訴我爲什麼嗎?Android XML ImageView變化圖片

icon = (ImageView)findViewById(R.id.imageView1); 

    icon.setOnTouchListener(new OnTouchListener(){ 

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

      switch (event.getAction()){ 
      case MotionEvent.ACTION_DOWN: 
       icon.setImageResource(R.drawable.buttondown); 
       break; 
      case MotionEvent.ACTION_UP: 
       icon.setImageResource(R.drawable.ic_launcher); 
       break; 
      case MotionEvent.ACTION_MOVE: 
       icon.setImageResource(R.drawable.abc_ab_bottom_transparent_dark_holo); 
       break; 
      } 
      return false; 
    } 

回答

0

您需要返回true以通知android已經消耗了該事件。

public boolean onTouch(View v, MotionEvent event) { 

     switch (event.getAction()){ 
     case MotionEvent.ACTION_DOWN: 
      icon.setImageResource(R.drawable.buttondown); 
      break; 
     case MotionEvent.ACTION_UP: 
      icon.setImageResource(R.drawable.ic_launcher); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      icon.setImageResource(R.drawable.abc_ab_bottom_transparent_dark_holo); 
      break; 
     } 
     return true; 
} 

從文檔:

如果

真正的聽衆已經消耗的情況下,否則爲false。

如果你返回true,那麼你說你只是消費了這個事件,而你對其他人感興趣。如果你返回false,這將持續在ACTION_DOWN上,因爲事件沒有被消耗。

+0

你能解釋一下爲什麼嗎? 另外我爲該ImageView添加了一個空的OnClickListener,並且它也可以工作。 如果你返回false,你會選擇這在3分鐘 – Greyshack 2014-10-17 15:22:48

+0

作爲最好你告訴android **你不**消耗聆聽者。這樣另一個監聽器就不會被調用。如果你返回true,那麼android將停止處理那個ACTION_DOWN事件。並因此它會處理其他 – 2014-10-17 15:24:11

+0

爲了更好的信息檢查在這裏:http://stackoverflow.com/questions/3756383/what-is-meaning-of-boolean-value-returned-from-an-event-handling-method -in-雄 – 2014-10-17 15:26:11