Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android ----------- 事件分發 機制 研究

Android ----------- 事件分發 機制 研究

編輯:關於Android編程





事件的分發機制:


1 Android 中 對應屏幕 點擊事件, 會進行 分發:
屏幕及 是由硬件完成物理坐標計算的。生成一個對應於 手機屏幕 左上角的 偏移量!
包含: rawX rawY


2 setContentView(R.layout.activity_main);

當屏幕 發生 點擊事件的時候: Android 會將 原始的點擊坐標,
發送給 windows 類。 Windows(系統級別的類) 手機的窗口, 負責 事件傳遞的老祖宗。
有Android 系統提供的 並且只有 一個Window 的實例!

Window 進行第一次的分發事件!

3 window 把事件 向自己的子容器 和 組件 傳遞。 字內容就是 Activity。


4 Activity 向自己的ContentView 傳遞。傳遞時 檢查 ContentView 內容的
容器 或者 控件 是否進行事件的響應操作。




以上幾點: 有android 系統 自動生成,不需要我們的參入!
基本的原理。


----------------------------------------------------------------


5 之後的操作 需要 我們(工程師)來進行處理:


6 查找對應的響應事件。
根據物理坐標, 找到響應的 組件。 確定那個容器和組件。

7 當容器 找到了 含有處理事件的 控件和 容器 ,那麼 傳遞進來的 X Y 就會發生問題。
坐標調整為 自身而言的 X Y 坐標 用 GetX 和 GetY 獲取!




8 分發,之內 檢查是否 阻止? 如果阻止的 事件就不會向下分發 事件。
onInterceptTouchEvent 父容器 阻止 子組件的 事件分發, 返回true 子類就不會有事件分發,和 事件的響應!
直接從根部 解決!

onTouchListener()
返回true 就是不交給 父類!



如果 onTouchListener 先執行 onTouch()
返回值 true 分發結束
返回False 控件自身的onTouchListener 才執行。




---------------------------------------------------------------


1 默認情況: 如何讓發一個控件 能夠接受 MOVE UP?
Down 是最開始的,如果返回 true , 才會分發事件。 否則 不會!


2 Click 一般的情況下 都是有 View的 onTouchEvent 出發的。


3 長按 拖拽 以及更多的手勢 事件。 可以有 手勢識別器 來檢測,進行事件的處理!


4 事件是否出觸發,應該根據 當前控件的功能 來處理, 在需要使用父類的 功能的情況下,
應該調用父類的 事件處理機制 處理。

例如: listView onTouchEvent()

5 事件的傳遞: 並不是 子類與父類的關系。
是 父容器 與 子控件 之間的關系。














  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved