安卓控件觸摸滑動事件沖突簡介

這是一個外層的控件,它是一個viewPager,在它的里面有個listView,listView每一個item被點擊會彈出內(nèi)容,這里要講解的是ViewPager子View滑動事件沖突的解決,安卓系統(tǒng)提供給我們關(guān)于觸摸傳遞事件有三個方法:

它們分別是:

1、public boolean dispatchTouchEvent(MotionEvent ev)? 這個方法用來分發(fā)TouchEvent

2、public boolean onInterceptTouchEvent(MotionEvent ev) 這個方法用來攔截TouchEvent

3、public boolean onTouchEvent(MotionEvent ev) 這個方法用來處理TouchEvent

當條目被點擊,首先Activity將TouchEvent事件通過dispatchTouchEvent方法傳遞給ViewGroup,

ViewGroup通過dispatchTouchEvent方法傳遞給interceptTouchEvent,這個時候,如果返回true ,則交給這個ViewGroup的onTouchEvent處理;如果返回false,則交給子View的dispatchTouchEvent方法處理。

當事件傳遞到子view 的dispatchTouchEvent方法中時,通過方法傳遞到當前View的onTouchEvent方法中,這個時候如果返回true,那么這個事件就會止于該view;如果返回 false ,那么這個事件會從這個子view 往上傳遞,而且都是傳遞到父View的onTouchEvent 來接收。

當傳遞到ViewGroup的 onTouchEvent 最后也返回 false 的話,它將繼續(xù)傳遞到Activity的onTouchEvent中,還是返回false的話,這個事件就會“消失“;事件向上傳到中間的任何onTouchEvent方法中,如果返回true,則代表事件被消費,就不會再傳遞。

下附圖給予參考,觸摸傳遞:

子ViewPager


父ViewPager



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容