事件分發(fā)詳解

View是如何被添加到屏幕窗口上

系統(tǒng)會創(chuàng)建一個頂層布局容器DecorView,它是一個ViewGroup容器繼承與Framlayout,是phoneWindow對象持有的一個實例,它是所有程序的頂層View,在系統(tǒng)內(nèi)部進行初始化。當DecorView初始化完成之后,系統(tǒng)會根據(jù)應用程序的主題特性加載一個基礎容器,例如:NoActionBar,不同的主題加載的基礎容器不一樣。但是不管怎樣一定會有一個id為content的容器,這個容器為Framlayout,而我們設置的setContentView就是被解析添加到了這個Framlayout當中。

事件的定義

定義:當用戶觸摸屏幕時,將產(chǎn)生的觸摸行為(Touch事件)

事件類型

MotionEvent.ACTION_DOWN 手指剛接觸屏幕
MotionEvent.ACTION_UP 手指從屏幕松開
MotionEvent.ACTION_MOVE 手指在屏幕上滑動
MotionEvent.ACTION_CANCEL 非人為因素取消

事件序列

正常情況下,一次手指觸摸屏幕的行為會觸發(fā)一系列點擊事件

  • 點擊屏幕后立即松開,事件序列為DOWN->UP
  • 點擊屏幕滑動一會再松開,事件序列為DOWN->MOVE->···MOVE->UP
13212816.png

事件分發(fā)的對象

  • Activity:控制生命周期 & 處理事件
  • ViewGroup:一組View的集合(含多個子View)
  • View:所有UI組件的基類

事件分發(fā)主要方法

  • dispatchTouchEvent(MotionEvent ev):用來進行事件分發(fā)
  • onInterceptTouchEvent(MotionEvent ev): 判斷是否攔截事件(只存在ViewGroup中)
  • onTouchEvent(MotionEvent ev): 處理點擊事件

事件分發(fā)模型

事件分發(fā)模型.png
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉變要...
    余生動聽閱讀 10,803評論 0 11
  • 彩排完,天已黑
    劉凱書法閱讀 4,458評論 1 3
  • 表情是什么,我認為表情就是表現(xiàn)出來的情緒。表情可以傳達很多信息。高興了當然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,475評論 2 7

友情鏈接更多精彩內(nèi)容