日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

View的Touch事件分发(一.初步了解)

發布時間:2023/11/28 生活经验 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 View的Touch事件分发(一.初步了解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android中Touch事件的分發又分為View和ViewGroup的事件分發,先來看簡單的View的touch事件分發。

一次完整的Touch事件序列為:

ACTION_DOWN -> ACTION_MOVE -> ACTION_UP

對于Touch事件的分發,不管是View還是ViewGroup都和以下的三個方法有關系:

dispatchTouchEvent():事件分發

onInterceptTouchEvent():事件攔截(ViewGroup才有該方法,View沒有)

onTouchEvent():事件消費

現象:給一個控件設置OnTouchListener和OnClickListener,點擊控件,會有以下3種結果:

1.OnTouchListener,OnTouchEvent,OnClickListener三個都有的情況下,OnTouchListener返回false :

OnTouchListener.DOWN?->?OnTouchEvent.DOWN?->?OnTouchListener.MOVE

->?OnTouchEvent.MOVE?->?OnTouchListener.UP ->?OnTouchEvent.UP ->?OnClickListener

View的事件調度順序是dispatchTouchEvent() -> onTouchListener() -> onTouchEvent() -> onLongCLick() -> onClick()

2.OnTouchListener,OnTouchEvent,OnClickListener三個都有的情況下?,OnTouchListener返回true :

OnTouchListener.DOWN?->?OnTouchListener.MOVE?->?OnTouchListener.UP

只執行OnTouchListener,后續都不執行

3.OnTouch,OnClickListener前提是OnTouchEvent返回true :

OnTouchEvent.DOWN?->?OnTouchEvent.MOVE?->?OnTouchEvent.UP

不會執行OnClickListener

結論:

1.OnTouchListener()的onTouch()方法的執行是優先于View的OnTouchEvent()方法。

2.OnTouchListener的onTouch()方法返回了true,表示消費了touch事件,后續View的onTouchEvent(),onClick(),onLongClick()也就不會再執行了。

3.onClick(),onLongClick()等方法都是在onTouchEvnet()方法中進行執行的,ACTION_DOWN中處理長點擊onLongClick(),ACTION_UP中處理點擊onClick()。

后續會從源碼來分析整個View的Touch事件分發過程,源碼分析可?View的Touch事件分發(二.源碼分析)???????

總結

以上是生活随笔為你收集整理的View的Touch事件分发(一.初步了解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。