Android的TouchEvent通常包含三個動作,ACTION_DOWN,ACTION_MOVE與ACTION_UP皆看。
發(fā)出的順序是DOWN->MOVE->MOVE->…->UP(注意MOVE事件是否能夠被觸發(fā)取決于操作手勢里面是否包含了移動的動作)勉痴。消息分發(fā)流程,從上到下,從父到子:Activity->ViewGroup1->ViewGroup1的子ViewGroup2->…->Target View
消息響應流程,從下到上,從子到父:Target View->…->ViewGroup1的子ViewGroup2->ViewGroup1->Activity
總結(jié):
1、事件入口是dispatchTouchEvent(),它會先執(zhí)行注冊的onTouch監(jiān)聽,如果一切順利的話挽铁,接著執(zhí)行onTouchEvent伟桅,在onTouchEvent里會執(zhí)行onClick監(jiān)聽。
2叽掘、無論是dispatchTouchEvent還是onTouchEvent楣铁,如果返回true表示這個事件已經(jīng)被消費、處理了够掠,不再往下傳了民褂。在dispathTouchEvent的源碼里可以看到,如果onTouchEvent返回了true疯潭,那么它也返回true赊堪。如果在執(zhí)行onTouch監(jiān)聽的時候,onTouch返回了true竖哩,那么它也返回true哭廉,這個事件提前被onTouch消費掉了。就不再執(zhí)行onTouchEvent了相叁,更別說onClick監(jiān)聽了遵绰。onTouch()->onTouchEvent()->onClick()->onLongClick() .是否能夠順序執(zhí)行,取決于每個方法的返回值是true還是false增淹。
onInterceptTouchEvent代表攔截,如果返回false,說明不攔截,向下傳遞;如果返回true,代表攔截.
dispatchTouchEvent方法用于事件的分發(fā)椿访。返回true表示不繼續(xù)分發(fā),事件被消費虑润。返回false則繼續(xù)往下分發(fā)成玫,如果是ViewGroup則分發(fā)給onInterceptTouchEvent進行判斷是否攔截該事件。
onTouchEvent方法用于事件的處理拳喻,返回true表示消費處理當前事件哭当,返回false則不處理,交給子控件進行繼續(xù)分發(fā)冗澈。
onInterceptTouchEvent是ViewGroup中才有的方法钦勘,View中沒有,它的作用是負責事件的攔截亚亲,返回true的時候表示攔截當前事件彻采,不繼續(xù)往下分發(fā),交給自身的onTouchEvent進行處理捌归。返回false則不攔截颊亮,繼續(xù)往下傳。這是ViewGroup特有的方法陨溅,因為ViewGroup中可能還有子View,而在Android中View中是不能再包含子View的绍在。
大順序是這樣的:dispatchTouchEvent - onInterceptTouchEvent - onTouch - onTouchEvent - onClick
在Activity,View,ViewGroup中,這些方法的存在與否如下:
Activity只有dispatchTouchEvent 和onTouchEvent方法.
View中有dispatchTouchEvent,onTouchEvent
ViewGroup中有dispatchTouchEvent,onInterceptTouchEvent ,onTouchEvent .而onTouch和onClick方法,則是通過setonXXListener的方式來增加的,Activity不可以set這兩個方法.這樣我們就可以解釋為什么要有onTouch和onTouchEvent兩個方法了.
Android 按鍵事件響應
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門留攒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來煤惩,“玉大人,你說我怎么就攤上這事炼邀∑侨啵” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵拭宁,是天一觀的道長洛退。 經(jīng)常有香客問我,道長杰标,這世上最難降的妖魔是什么兵怯? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮腔剂,結(jié)果婚禮上媒区,老公的妹妹穿的比我還像新娘。我一直安慰自己桶蝎,他們只是感情好驻仅,可當我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著登渣,像睡著了一般噪服。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胜茧,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼喉前!你這毒婦竟也來了没酣?” 一聲冷哼從身側(cè)響起王财,我...
- 正文 年R本政府宣布郑口,位于F島的核電站鸳碧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏犬性。R本人自食惡果不足惜瞻离,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乒裆。 院中可真熱鬧套利,春花似錦、人聲如沸鹤耍。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽稿黄。三九已至喊衫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杆怕,已是汗流浹背族购。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 關(guān)于Android觸摸事件機制 Android觸摸事件機制亿卤,開發(fā)中都是老生常談,但是慚愧的是鹿霸,這么久開發(fā),依然對A...
- 前言 Android事件分發(fā)機制是Android開發(fā)者必須了解的基礎(chǔ) 網(wǎng)上有大量關(guān)于Android事件分發(fā)機制的文...
- Android 事件分發(fā)和滑動沖突都是開發(fā)中經(jīng)常遇到的難點問題,遇到問題時可能會通過 Google 或者 Stac...
- 1. 概述 ??作為Android開發(fā)中最常見的一個控件,個人覺得有必要談談了屹堰。我們剛開始接觸Android的時候...
- 第3章 View的事件體系 [TOC] 3.1 View基礎(chǔ)知識 1. View的位置參數(shù) 首先來認識一下View...