1. 程式人生 > >Android onTouchEvent事件中onTouch方法返回值詳解

Android onTouchEvent事件中onTouch方法返回值詳解

1、 若return false說明沒有成功執行onTouch事件,在執行完onTouch裡面的程式碼之後,onTouch事件並沒有結束。因此某些元件如Gallery會自動執行它所在view裡onTouch方法的程式碼。若在onTouch方法裡面增加你的程式碼並且最後return false就會執行你在OnTouch方法中的處理操作了。  2、 若return true說明你已經成功執行onTouch方法了,在執行完onTouch中的程式碼之後,這個onTouch事件就結束了。也不會再呼叫元件如Gallery預設的onTouch方法了。在onTouch方法中,我們可以做很多操作,如move,down,up等等,若我們在move裡面return false,那麼接著的fling,up等後面的事件也不會處理。 
Gallery.setOnTouchListener(new OnTouchListener(){       //@Override       public boolean onTouch(View v, MotionEvent event) {   System.out.println("Gallery onTouch");   if(event.getAction()==MotionEvent.ACTION_MOVE){      mDismiss.removeMessages(1);      System.out.println("ACTION_MOVE ");  
}else if(event.getAction()==MotionEvent.ACTION_UP){      mDismiss.sendEmptyMessageDelayed(1,10000);      System.out.println("ACTION_UP ");   }   return false;       }   });  注意: 1. 在ViewGroup中onInterceptTouchEvent方法若反回false,那麼觸屏事件會繼續向下傳遞,但如果沒有子View去處理這個事件,即子view的onTouchEvent沒有返回True,則最後還是由ViewGroup去處理這個事件,
也就又執行了自己的onTouchEvent。
2. onTouch呼叫前會自動呼叫onInterceptTouchEvent 如果onInterceptTouchEvent返回的false,則不會呼叫onTouchEvent,若重寫onInterceptTouchEvent讓它在需要呼叫onTouchEvent時返回true