Android觸摸機(jī)制學(xué)習(xí)

關(guān)于view的Touch事件、關(guān)于ViewGroup的touch事件

View的觸摸事件:

dispatchTouchEvent欣舵、onTouchEvent、setOnTouchListener

onTouch()和onTouchEvent的區(qū)別:

  • onTouch()是View提供給用戶摆屯,讓用戶自己處理觸摸事件的接口邻遏。而onTouchEvent()是Android系統(tǒng)自己實(shí)現(xiàn)的接口糠亩。
  • onTouch()的優(yōu)先級比onTouchEvent()的優(yōu)先級更高虐骑。dispatchTouchEvent()中分發(fā)事件的時(shí)候,會先將事件分配給onTouch()進(jìn)行處理赎线,然后才分配給onTouchEvent()進(jìn)行處理廷没。
  • 如果onTouch()對觸摸事件進(jìn)行了處理,并且返回true垂寥;那么颠黎,該觸摸事件就不會分配在分配給onTouchEvent()進(jìn)行處理了。只有當(dāng)onTouch()沒有處理滞项,或者處理了但返回false時(shí)狭归,才會分配給onTouchEvent()進(jìn)行處理。

傳遞流程:

  • Android事件分發(fā)是先傳遞到ViewGroup文判,再由ViewGroup傳遞到View的过椎。
  • 在ViewGroup中可以通過onInterceptTouchEvent方法對事件傳遞進(jìn)行攔截,onInterceptTouchEvent方法返回true代表不允許事件繼續(xù)向子View傳遞戏仓,返回false代表不對事件進(jìn)行攔截疚宇,默認(rèn)返回false。
  • 子View中如果將傳遞的事件消費(fèi)掉赏殃,ViewGroup中將無法接收到任何事件敷待。
    好了,Android事件分發(fā)機(jī)制完全解析到此全部結(jié)束仁热,結(jié)合上下兩篇榜揖,相信大家對事件分發(fā)的理解已經(jīng)非常深刻了。

簡單來說就是傳遞的時(shí)候用父視圖往子視圖傳遞抗蠢,中間如果某一層視圖的onInterceptTouchEvent返回true举哟,那么就不會接著往下傳遞,然后開始響應(yīng)流程物蝙,從子視圖往父視圖傳遞炎滞,如果中間某一層消費(fèi)了這個(gè)事件,那么父視圖就不會接收到這個(gè)事件诬乞。

涉及到的API:

MotionEvent : 觸屏事件

  • int ACTION_DOWN=0 : 代表down
  • Int ACTION_MOVE=2 ; 代表move
  • Int ACTION_UP=1 : 代表up
  • getAction() : 得到事件類型值
  • getX() : 得到事件發(fā)生的x軸坐標(biāo)(相對于當(dāng)前視圖)
  • getRawX() :得到事件發(fā)生的x軸坐標(biāo)(相對于屏幕左頂點(diǎn))
  • getY() : 得到事件發(fā)生的y軸坐標(biāo)(相對于當(dāng)前視圖)
  • getRawY() :得到事件發(fā)生的y軸坐標(biāo)(相對于屏幕左頂點(diǎn))

Activity

  • boolean dispatchTouchEvent(MotionEvent event) : 分發(fā)事件
  • boolean onTouchEvent(MotionEvent event) : 處理事件的回調(diào)

View

  • boolean dispatchTouchEvent(MotionEvent event) : 分發(fā)事件
  • boolean onTouchEvent(MotionEvent event) : 處理事件的回調(diào)方法
  • void setOnTouchListener(OnTouchListener l) : 設(shè)置事件監(jiān)聽器
  • void setOnClickListener(OnClickListener l) : 設(shè)置點(diǎn)擊監(jiān)聽
  • void setOnLongClickListener(OnLongClickListener l) : 設(shè)置長按監(jiān)聽
  • void setOnCreateContextMenuListener(OnCreateContextMenuListener l):用于創(chuàng)建菜單

ViewGroup

  • boolean dispatchTouchEvent(MotionEvent ev) : 分發(fā)事件
  • boolean onInterceptTouchEvent(MotionEvent ev) : 攔截事件的回調(diào)方法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末册赛,一起剝皮案震驚了整個(gè)濱河市钠导,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌森瘪,老刑警劉巖牡属,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扼睬,居然都是意外死亡逮栅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門窗宇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來措伐,“玉大人,你說我怎么就攤上這事军俊〗募樱” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵粪躬,是天一觀的道長担败。 經(jīng)常有香客問我,道長镰官,這世上最難降的妖魔是什么提前? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮泳唠,結(jié)果婚禮上狈网,老公的妹妹穿的比我還像新娘。我一直安慰自己警检,他們只是感情好孙援,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扇雕,像睡著了一般拓售。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上镶奉,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天础淤,我揣著相機(jī)與錄音,去河邊找鬼哨苛。 笑死鸽凶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的建峭。 我是一名探鬼主播玻侥,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼亿蒸!你這毒婦竟也來了凑兰?” 一聲冷哼從身側(cè)響起掌桩,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姑食,沒想到半個(gè)月后波岛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡音半,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年则拷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曹鸠。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡煌茬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出物延,到底是詐尸還是另有隱情宣旱,我是刑警寧澤仅父,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布叛薯,位于F島的核電站,受9級特大地震影響笙纤,放射性物質(zhì)發(fā)生泄漏耗溜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一省容、第九天 我趴在偏房一處隱蔽的房頂上張望抖拴。 院中可真熱鬧,春花似錦腥椒、人聲如沸阿宅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洒放。三九已至,卻和暖如春滨砍,著一層夾襖步出監(jiān)牢的瞬間往湿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工惋戏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留领追,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓响逢,卻偏偏與公主長得像绒窑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子舔亭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容