安卓開發過程中滑動衝突的情形主要有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的情況下,按相反的順序在析構函式中匹配新增...