View事件分發和座標系統總結

2021-07-25 22:41:56 字數 715 閱讀 4645

view 座標分析

相對與父控制項

mtop

mleft

mbottom

mright

絕對值

mheight

mwidth

隱藏部分絕對值

mscrollx :上部隱藏部分 相對與mtop

mscrolly  : 左邊隱藏部分 相對於mleft

以(mtop,mleft) 為座標原點

x y

以螢幕左上角為原點

rawx,rawy

事件分發

採用組合模式和包裝模式

由activity的dispatchtouchevent發起

一路向上傳遞,呼叫viewgroup 的dispatchtouchevent,找到最上層焦點view, view的dispatchtouchevent呼叫ontouchevent進行事件處理,如果事件被消耗掉,則設定target為該view,後續move,up,cancel等操作直接分發該view ,如果事件沒有消耗,則返回上層dispatchtouchevent後呼叫super.dispatchtouchevent處理,該方法就是view方法的dispatchtouchevent,所以會呼叫ontouchevent處理,如果未被處理,則一路向下傳遞,知道activity ontouchevent

另外只有down的時候不強制要求有target,否則,強制reset狀態

View 事件分發機制

小小總結下 詳細看1 viewgroup繼承自view,新增了onintercepttouchevent函式,view無此函式,故不會攔截 2 首先呼叫的是dispatchtouchevent,在此函式中進行判斷是否呼叫onintercepttouchevent,ontouch,ontoucheve...

View事件分發機制

擷取自 android開發藝術探索 三個重要方法 public boolean dispatchtouchevent motionevent ev 事件分發,return true向子view傳遞,return false傳遞到父view public boolean onintercepttouc...

關於View事件分發

關於事件分發 dispatchtouchevent 是否消費,不消費就傳遞給上一層 對於view,super是true,走ontouchevent 對於viewgroup,如果是super,走onintercepttouchevent去判斷是否進行攔截 如果是true,直接消費 但是不會觸發onto...