摘要:下事件分發(fā)和消費事件前言中與事件相關(guān)的方法包括能夠響應(yīng)的空間包括。事件分析事件分發(fā)事件發(fā)生時的方法會以隧道方式從根元素依次往下傳遞直到最內(nèi)層子元素或在中間某一元素中由于某一條件停止傳遞將事件傳遞給最外層的
Android下Touch事件分發(fā)和消費事件 前言
Android中與touch事件相關(guān)的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev);能夠
響應(yīng)的空間包括:ViewGroup、View、Activity。方法與控件的對應(yīng)關(guān)系如下表所示:
Touch事件相關(guān)方法 | 方法功能 | View | ViewGroup | Activity |
---|---|---|---|---|
public boolean dispatchTouchEvent(MotionEvent ev) | 事件分發(fā) | YES | YES | YES |
public boolean onInterceptTouchEvent(MotionEvent ev) | 事件攔截 | NO | YES | NO |
public boolean onTouchEvent(MotionEvent ev) | 事件響應(yīng) | YES | YES | YES |
從這張表中可以看出ViewGroup對與Touch事件相關(guān)的三個方法均能響應(yīng),而Activity和View對于onInterceptTouchEvent(MotionEvent ev)也就是事件攔截不進行響應(yīng)。`另外需要注意的是View對dispatchTouchEvent(MotionEvent ev)響應(yīng)的前提是可以向該View中添加子View,如果當(dāng)前的View已經(jīng)是一個最小單元View(比如TextView),那么無法向這個最小View中添加子View,也就無法向子 View 進行事件的分發(fā)和攔截,所以它沒有 dispatchTouchEvent(MotionEvent ev) 和 onInterceptTouchEvent(MotionEvent ev),只有 onTouchEvent(MotionEvent ev)。
Touch事件分析事件分發(fā):public boolean dispatchTouchEvent(MotionEvent ev)
Touch事件發(fā)生時Activity的dispatchTouchEvent(MotionEvent ev)方法會以隧道方式(從根元素依次往下傳遞直到最內(nèi)層子元素或在中間某一元素中由于某一條件停止傳遞)將事件傳遞給最外層View的dispatchTouchEvent(MotionEvent ev)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/70538.html
摘要:事件被上層攔截時觸發(fā)。事件返回時直接指向了父的這一部分是不合理的,實際上它僅僅是給了父的一個返回值,父根據(jù)返回值來調(diào)用自身的。是根據(jù)的返回值來確定是調(diào)用子的還是自身的,并沒有將調(diào)用交給。 原文鏈接 簡簡單單講清楚android事件分發(fā)。 什么叫事件分發(fā)機制 ? 事件分發(fā)是:當(dāng)發(fā)生了一個事件時,在屏幕上找到一個合適的控件來處理這個事件的過程。 因為一個界面上控件如此之多,發(fā)生一個事件后總...
閱讀 1987·2021-09-26 10:19
閱讀 3262·2021-09-24 10:25
閱讀 1649·2019-12-27 11:39
閱讀 1933·2019-08-30 15:43
閱讀 675·2019-08-29 16:08
閱讀 3512·2019-08-29 16:07
閱讀 912·2019-08-26 11:30
閱讀 1277·2019-08-26 10:41