Android onTouchEvent事件中onTouch方法返回值詳解
阿新 • • 發佈:2019-01-27
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