亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android觸摸事件如何傳遞?

Android觸摸事件如何傳遞?

慕婉清6462132 2019-11-13 15:01:25
我不是在問如何處理觸摸事件,而是幕后發生了什么?如果有多個嵌套的小部件,它們以什么順序看到事件?開發者對此有控制權嗎?理想情況下,我想要有關該主題的文檔。
查看完整描述

3 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

從活動的角度來看:

觸摸事件首先傳遞到Activity.dispatchTouchEvent。在這里您可能會首先抓住它們。

在這里,它們被調度到Window,并在其中遍歷View層次結構,以使最后繪制的窗口小部件(在其他窗口小部件之上)有機會首先在View.onTouchEvent中處理觸摸。如果某些View在onTouchEvent中返回true,則遍歷停止并且其他View不接收觸摸事件。

最后,如果沒有View消耗觸摸,則將其傳遞給Activity.onTouchEvent。

這就是您的全部控制權。順理成章的是,您看到的繪制在其他對象之上的東西有機會在觸摸下面的事物之前處理觸摸事件。


查看完整回答
反對 回復 2019-11-13
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

偽代碼:


? ?public boolean dispatchTouchEvent(MotionEvent ev) {

? ? ? ? boolean consume = false;

? ? ? ? if (onInterceptTouchEvent(ev) {

? ? ? ? ? ? consume = onTouchEvent(ev);

? ? ? ? } else {

? ? ? ? ? ? consume = child.dispatchTouchEvent(ev);

? ? ? ? }


? ? ? ? return consume;

? ? }

ref:Android開發藝術探索


查看完整回答
反對 回復 2019-11-13
  • 3 回答
  • 0 關注
  • 366 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號