2010-11-09 92 views
0

這是我的代碼。我很困惑onTouch(),請看看

當返回false時,只能調用ACTION_DOWN,並且返回true時,所有操作都可以,爲什麼?

aView = findViewById(R.id.a1); 
aView.setOnTouchListener(new OnTouchListener(){ 

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

     // TODO Auto-generated method stub 
     System.out.println("Gallery onTouch"); 

     if(event.getAction()==MotionEvent.ACTION_MOVE){ 
      Log.e("touchtest", "ACTION_MOVE"); 
      System.out.println("ACTION_MOVE ");   

     }else if(event.getAction()==MotionEvent.ACTION_UP){ 
      Log.e("touchtest", "ACTION_UP"); 
      System.out.println("ACTION_UP "); 

     }else if (event.getAction()==MotionEvent.ACTION_DOWN){ 
      Log.e("touchtest", "ACTION_DOWN"); 
     } 

     return true; 
    } 

}); 

回答

2

在這種情況下,它總是建議使用開關的情況下,你應該以阻止其他操作,

switch(event.getAction()){ 
     case MotionEvent.ACTION_MOVE: Log.e("touchtest", "ACTION_MOVE"); 
      return true; 
     case MotionEvent.ACTION_UP: Log.e("touchtest", "ACTION_UP"); 
      return true; 
     case MotionEvent.ACTION_DOWN: Log.e("touchtest", "ACTION_DOWN"); 
      return true; 
     default: 
      return false; 
} 

希望它會工作

+0

返回true,這沒關係,現在...爲什麼會出現必須返回true – Nick 2010-11-09 06:20:12

+0

我現在明白了...謝謝 – Nick 2010-11-09 06:22:07