滑動衝突 常見情形及解決方案

2021-09-07 09:43:14 字數 1920 閱讀 8392

安卓開發過程中滑動衝突的情形主要有2類:

滑動衝突解決策略的理論基礎為安卓的

事件分發機制,

針對滑動衝突的解決策略有以下兩種:

建議採用第一種方法,易於理解,不容易出錯。

實際測試後發現:原生根本就不會產生滑動衝突! 1、

左右滑動(viewpager處理觸控事件)

此後所有的

action_move、

action_up=1事件都交由

父viewpager的

ontouchevent處理了。

2、上下滑動(

listview

處理觸控事件)

可以發現,父viewpager的onintercepttouchevent始終返回false,即從不會攔截觸控事件

,所以上下滑動時的事件完全由

listview處理(這是最原始的狀態)。

ps:1、上下滑動(

listview

處理觸控事件)

2、左右滑動(viewpager處理觸控事件)

情況同樣和上面一樣

1、當scrollview的內容沒有超出螢幕時(也即scrollview不需要上下滑動),不會產生滑動衝突(也即內部的listview能正常滑動)

,所有觸控事件都由

listview處理。

2、當scrollview的內容超出螢幕時(也即scrollview需要上下滑動),由於listview也需要上下滑動,所以會產生滑動衝突(也即內部的listview講不能正常滑動)

,所有觸控事件都由

scrollview處理!

外部攔截法即:重寫父容器的onintercepttouchevent方法,當自己需要的時候就攔截,否則不攔截。

可以很容易理解,因為這和android自身的事件處理機制

邏輯是一模一樣的。

核心**為:

@override

public

boolean onintercepttouchevent(motionevent ev)

return intercepted;

} 內部攔截法即:

父容器不做處理,在子view中呼叫getparent().requestdisallowintercepttouchevent(true),作用是:告訴父view,我的觸控事件由我自行處理,不要阻礙我

不過前提是:要保證父親容器不能攔截down事件。

android雙向滑動衝突處理及解決方案

android中的事件型別分為按鍵事件和螢幕觸控事件,touch事件是螢幕觸控事件的基礎事件,有必要對它進行深入的了解。乙個最簡單的螢幕觸控動作觸發了一系列touch事件 action down action move action move action move.action move acti...

git pull 衝突 解決方案

step1.在本地倉庫中,更新並合併 git fetch origin git rebase origin 3d planningstep2.依據提示分別開啟衝突的檔案,逐一修改衝突 step3.所有衝突都修改完畢後,提交修改的 git add u git rebase continuestep4....

常見記憶體洩露及解決方案

常見記憶體洩露及解決方案 常見記憶體洩露及解決方案 選自ood啟示錄 new delete,array new arrray delete匹配 case 1 在類的建構函式與析構函式中沒有匹配地呼叫 new delete!解決方法 檢查建構函式,在出現new的情況下,按相反的順序在析構函式中匹配新增...