溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android之事件分發(fā)機(jī)制與沖突的示例分析

發(fā)布時(shí)間:2021-09-08 16:09:52 來源:億速云 閱讀:176 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹Android之事件分發(fā)機(jī)制與沖突的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

常見的滑動(dòng)沖突場景!

目前常見的滑動(dòng)沖突主要可以分為以下三種來概括:

  1. 外部滑動(dòng)方向和內(nèi)部View的滑動(dòng)方向不一致,內(nèi)部的View和外部的View的滑動(dòng)方向是**互相垂直的,**比如Scroll View嵌套View Pager,如圖1-1所示;

  2. 外部滑動(dòng)方向和內(nèi)部View的滑動(dòng)方向是一致的,內(nèi)部的View和外部的View的滑動(dòng)方向**互相平行,**比如Scroll View嵌套RecyclerView ,如圖1-2所示;

  3. 外部滑動(dòng)方向與內(nèi)部滑動(dòng)方向即有相同的又有垂直的,也就是以上兩種情況的綜合出現(xiàn),這種情況是算比較復(fù)雜的一種情況,如圖1-3所示。

Android之事件分發(fā)機(jī)制與沖突的示例分析

常見滑動(dòng)沖突的處理思路!

滑動(dòng)沖突看起來比較棘手,特別像場景3的那種嵌套好幾層的滑動(dòng)沖突。

但不管滑動(dòng)沖突多么的復(fù)雜,它主要涉及到的都是一些觸摸事件的分發(fā)和攔截,有一定的處理規(guī)則在里面,我們可以根據(jù)規(guī)則來選擇合適的方法來進(jìn)行處理:

常用的沖突解決的兩種基本思路

(1). 外部攔截法

即重寫父容器的onInterceptTouchEvent方法,根據(jù)父容器是否需要攔截這個(gè)事件來返回對應(yīng)的布爾值,如果父容器需要攔截這個(gè)觸摸事件則返回true,如果不攔截則返回false;

Android之事件分發(fā)機(jī)制與沖突的示例分析

(2). 內(nèi)部攔截法

即父容器不攔截任何的事件,將對應(yīng)的事件傳遞給子元素,根據(jù)子元素是否需要消耗這個(gè)觸摸事件來進(jìn)行處理,如果子元素不消耗此事件,又會(huì)交由父容器來進(jìn)行對應(yīng)的處理,子容器需要做如圖2-2處理,父容器需要做如圖2-3所示處理。

Android之事件分發(fā)機(jī)制與沖突的示例分析

Android之事件分發(fā)機(jī)制與沖突的示例分析

同時(shí),事件沖突也是一線互聯(lián)網(wǎng)大廠中的必考題,來看看下面這些問題你能答上來幾個(gè)?

  1. 說說你對事件分發(fā)機(jī)制的理解。(阿里面試真題)

  2. down事件和move事件對應(yīng)的流程機(jī)制是什么?(騰訊面試真題)

  3. 事件沖突中如何快速找到解決方案,請舉例。(字節(jié)面試真題)

  4. ScrollView 和RecyclerView 沖突時(shí),如何解決?(百度面試真題)

所以說,關(guān)于解決事件沖突的技巧,也是大家需要掌握其中精髓的!

但如果通過博客文章學(xué)習(xí),看完后自身是感覺學(xué)到了,一旦項(xiàng)目中出現(xiàn)了事件沖突的問題,很難將文章中的知識點(diǎn)運(yùn)用到實(shí)際問題當(dāng)中,而很多開發(fā)者在解決事件沖突中遇到的最大問題,就是很難找到解決問題的切入點(diǎn)。

以上是“Android之事件分發(fā)機(jī)制與沖突的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI