Android touch 事件傳遞機制

來源:互聯網
上載者:User

標籤:

前言:

(1)在自訂view的時候經常會遇到事件攔截處理,比如在側滑菜單的時候,我們希望在側滑菜單裡面有listview控制項,但是我們希望既能左右滑動又能上下滑動,這個時候就需要對觸摸的touch事件進行攔截。這個時候我們就需要明白android touch 事件傳遞機制,

(2)以前很多時候比較模糊,也許是網上看到也有很多事件傳遞的相關文章,但我看著頭暈,解釋不徹底,有的說得一半,總算不滿足不滿意,於是據我自己的理解來徹底的來整理下具體的是怎麼個傳遞方式,分享給大家,希望大家看到有什麼不對的地方及時提出糾正。謝謝?

測試布局:

這是本次理解android touch 事件傳遞機制的布局檔案

傳遞機制視圖:?

?

(1)android touch 事件傳遞機制,由於網頁原因會被展開,請大家單獨將該圖在另一個視窗開啟查看。

(2)事件是從Activity觸發事件然後傳遞到布局檔案,一層一層的往子容器傳遞到最底層的view,如果每層布局檔案未對該事件進行處理或者消費那麼該事件會從最底層開始往上傳到Activity進行消費。

(3)那麼事件的發起是由Activity介面的touch事件發起傳遞到布局視圖,但是該視圖只是描述了布局檔案或者view的相關事件傳遞機制,Activity事件沒有進行描述,但是在下面測試中會涉及Activity相關事件傳遞來解釋心中些許疑惑

事件傳遞另一個角度解釋:

一、每個View的子類都具有下面三個和TouchEvent處理密切相關的方法:
(1)public boolean dispatchTouchEvent(MotionEvent ev) ?分發TouchEvent
(2)public boolean onInterceptTouchEvent(MotionEvent ev) 攔截TouchEvent
(3)public boolean onTouchEvent(MotionEvent ev) 處理TouchEvent

二、?android touch 事件傳遞機制可以總結如下規律

(1)一個事件由使用者點擊觸發開始順著箭頭的方向進行傳遞,直到任意一個結束點結束事件傳遞。

(2)那麼事件傳遞可以由A傳到B,B可以不傳到C,B不進行分發,那麼就從B再傳回A進行消費然後結束,也可以由B傳到C然後傳遞D,或者不傳到D進行消費或者傳到父容器進行消費。

(3)忘掉以前的各種

?

?

?

?

?

?

Android touch 事件傳遞機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.