一费彼、擁有事件傳遞能力的類
Activity:擁有dispatchTouchEvent和onTouchEvent兩個方法涌萤。
GroupView:擁有dispatchTouchEvent睡腿、onInterceptTouchEvent和onTouchEvent三個方法。
View:擁有dispatchTouchEvent和onTouchEvent兩個方法灶芝。
二宽堆、事件分發(fā)
主要使用dispatchTouchEvent方法進(jìn)行事件分發(fā)腌紧,事件分發(fā)的順序如果下圖。
不過在ViewGroup層可以通過onInterceptTouchEvent方法進(jìn)行事件攔截畜隶。onInterceptTouchEvent為false表示不攔截壁肋,反之表示攔截。如果ViewGroup進(jìn)行事件攔截籽慢,整個事件的分發(fā)將不再向下傳遞浸遗。?
三、事件消費(fèi)
主要使用onTouchEvent方法進(jìn)行事件消費(fèi)箱亿,事件消費(fèi)順序如下圖跛锌。
onTouchEvent方法返回true表示該層控件消耗此事件,如果返回為false則表示該層控件不消耗此事件届惋,事件自動向上拋出髓帽。
四、requestDisallowInterceptTouchEvent方法
在子控件中使用getParent().requestDisallowInterceptTouchEvent(true)方法脑豹,表示子控件請求父控件不要消費(fèi)該事件郑藏,不過如果父控件中明確使用onInterceptTouchEvent進(jìn)行事件攔截,該方法將不會起到任何作用瘩欺。
提示:本文知識引用來源于https://www.cnblogs.com/smyhvae/p/4802274.html和《Android高級進(jìn)階》必盖。