編輯:關於Android編程
Android 中與 Touch 事件相關的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent
ev)、onTouchEvent(MotionEvent ev);能夠響應這些方法的控件包括:ViewGroup、View、Activity。方法與控件的對應關系如下表所示:
Touch 事件相關方法
方法功能
ViewGroup
View
Activity
public boolean dispatchTouchEvent(MotionEvent ev)
事件分發
Yes
Yes
Yes
public boolean onInterceptTouchEvent(MotionEvent ev)
事件攔截
Yes
Yes
No
public boolean onTouchEvent(MotionEvent ev)
事件響應
Yes
Yes
Yes
從這張表中我們可以看到 ViewGroup 和 View 對與 Touch 事件相關的三個方法均能響應,而 Activity 對 onInterceptTouchEvent(MotionEvent ev) 也就是事件攔截不進行響應。另外需要注意的是 View 對 dispatchTouchEvent(MotionEvent ev) 和 onInterceptTouchEvent(MotionEvent ev) 的響應的前提是可以向該 View 中添加子 View,如果當前的 View 已經是一個最小的單元 View(比如 TextView),那麼就無法向這個最小 View 中添加子 View,也就無法向子 View 進行事件的分發和攔截,所以它沒有dispatchTouchEvent(MotionEvent ev) 和 onInterceptTouchEvent(MotionEvent ev),只有 onTouchEvent(MotionEvent ev)。
一、Touch 事件分析
? 事件分發:public boolean dispatchTouchEvent(MotionEvent ev)
Touch 事件發生時 Activity 的 dispatchTouchEvent(MotionEvent ev) 方法會以隧道方式(從根元素依次往下傳遞直到最內層子元素或在中間某一元素中由於某一條件停止傳遞)將事件傳遞給最外層 View 的 dispatchTouchEvent(MotionEvent ev) 方法,並由該 View 的 dispatchTouchEvent(MotionEvent ev) 方法對事件進行分發。dispatchTouchEvent 的事件分發邏輯如下:
? 事件攔截:public
boolean onInterceptTouchEvent(MotionEvent ev)
在外層 View 的 dispatchTouchEvent(MotionEvent ev) 方法返回系統默認的 super.dispatchTouchEvent(ev) 情況下,事件會自動的分發給當前 View 的 onInterceptTouchEvent 方法。onInterceptTouchEvent 的事件攔截邏輯如下:
? 事件響應:public boolean onTouchEvent(MotionEvent ev)
在 dispatchTouchEvent 返回 super.dispatchTouchEvent(ev) 並且 onInterceptTouchEvent 返回 true 或返回 super.onInterceptTouchEvent(ev) 的情況下 onTouchEvent 會被調用。onTouchEvent 的事件響應邏輯如下:
通過下面的圖可以清楚的看到事件整個傳遞的過程(布局為viewGroup1在最外層,裡面嵌套一個viewGroup2,viewGroup2裡面添加了一個Button)。從下圖也可以看出,事件會最先被最外層的布局(viewGroup1)給相應,然後依次向內層(viewGroup2)傳遞,當傳遞到最內層的View (Button),如果View已經是一個最小單元時,那麼就會交給View的onTouchEvent處理事件,如果還不消費該事件,那麼事件就會向上回傳,直到沒有人處理這次事件,事件就會丟失。
(一)前言前三節課程我們已經對於React Native For Android的環境搭建,IDE安裝配置以及應用運行,調試相關的知識點做了講解。今天我們來講一個非常有用
這一篇來記錄一下使用ActiveAndroid關系型數據庫進行本地對象的保存。1.ActiveAndroid的介紹該項目的github地址:https://github.
前言:Activity生命周期是每一個Android開發者接觸Android之始就會學習的東西,每個人都會說出點什麼,我想任何一個經驗老道高級語言開發程序員談到生命周期這
msm8909+android5.1.1--打開調試(debug)串口1.共同修改的地方(1)kernel\arch\arm\configs\msm8909-1gb-CB