国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Android學習之Touch事件的處理

Anonymous1 / 833人閱讀

摘要:解釋如果某個控件或容器消費了事件,則與該事件相關的后續事件者會派發給該控件或容器進行處理。一般情況下以下三種情況的事件全部由方法處理,只是三種情況中的動作值不同。作用將觸摸事件向下層的或派發。作用表示抬起的狀態。

這是一篇老文章,移到我的新博客中,沒看過的,可以看看。

在移動開發過程當中,我們經常會遇到手勢處理和事件觸摸的情況,如果不了解整個事件的處理機制,對于開發的同學和碼農是非常痛苦的,但是事件觸摸的處理確實是一個非常復雜的過程,細講起來,估計我都能講迷糊,這里呢,我只做一些簡單的和常用事件的講解,希望能夠幫助大家。

概念,什么是事件的派發

事件的派發簡單來講就是Activity將事件派發給容器和控件,容器或控件將事件進一步派發給其子容器和子控件,直到事件最終派發到事件發生的焦點控件上。

常用的事件觸摸方法

我想對于這些常用的事件觸摸方法大家都應該有一定的了解,或者熟悉,那就是onTouchEvent()和dispatchTouchEvent(),OnInterceptTouchEvent(),看到方法后,相信你很快就會說,對我用過,但是具體的意思沒有搞清楚,看別人這么說的,別人這么用的,我就跟著這么用的,用之前,對于這些方法我們一定要搞清其作用,這樣才能在做起來有的放矢。現在我們就來介紹一下這三種方法的大概用法和作用。

Boolean onTouchEvent()

作用:處理本次觸摸事件。

解釋:如果某個控件或容器消費了touch事件,則與該touch事件相關的后續touch事件者會派發給該控件或容器進行處理。

返回值:該方法的返回值機理與鍵盤響應事件的相同,同樣是當已經完整地處理了該事件且不希望其他回調方法再次處理時返回true,否則返回false。

一般情況下以下三種情況的事件全部由onTouchEvent方法處理,只是三種情況中的動作值不同。

屏幕被按下:當屏幕被按下時,會自動調用該方法來處理事件,此時MotionEvent.getAction()的值為MotionEvent.ACTION_DOWN,如果在應用程序中需要處理屏幕被按下的事件,只需重新該回調方法,然后在方法中進行動作的判斷即可。

屏幕被抬起:當觸控筆離開屏幕時觸發的事件,該事件同樣需要onTouchEvent方法來捕捉,然后在方法中進行動作判斷。當MotionEvent.getAction()的值為MotionEvent.ACTION_UP時,表示是屏幕被抬起的事件。

在屏幕中拖動:該方法還負責處理觸控筆在屏幕上滑動的事件,同樣是調用MotionEvent.getAction()方法來判斷動作值是否為MotionEvent.ACTION_MOVE再進行處理。

Boolean OnInterceptTouchEvent()

作用:是否攔截觸摸事件,true表示攔截,faIse表示不攔截。

解釋:onInterceptTouchEvent這個事件是從父控件開始往子控件傳的,直到有攔截或者到沒有這個事件的view,然后就往回從子到父控件,(類似于預處理,當然也可以不處理)并改變事件的傳遞方向,也就是決定是否允許Touch事件繼續向下(子控件)傳遞,一但返回True(代表事件在當前的viewGroup中會被處理),則向下傳遞之路被截斷(所有子控件將沒有機會參與Touch事件),同時把事件傳遞給當前的控件的onTouchEvent()處理;返回false,則把事件交給子控件的onInterceptTouchEvent()。

void dispatchTouchEvent()

作用:將觸摸事件向下層的ViewGroup或View派發。

解釋:當TouchEvent發生時,首先Activity將TouchEvent傳遞給最頂層的View, TouchEvent最先到達最頂層 view 的 dispatchTouchEvent ,然后由 dispatchTouchEvent 方法進行分發,如果dispatchTouchEvent返回true ,則交給這個view的onTouchEvent處理,如果dispatchTouchEvent返回 false ,則交給這個 view 的 interceptTouchEvent 方法來決定是否要攔截這個事件,如果 interceptTouchEvent 返回 true ,也就是攔截掉了,則交給它的 onTouchEvent 來處理,如果 interceptTouchEvent 返回 false ,那么就傳遞給子 view ,由子 view 的 dispatchTouchEvent 再來開始這個事件的分發。如果事件傳遞到某一層的子 view 的 onTouchEvent 上了,這個方法返回了 false ,那么這個事件會從這個 view 往上傳遞,都是 onTouchEvent 來接收。而如果傳遞到最上面的 onTouchEvent 也返回 false 的話,這個事件就會“消失”,而且接收不到下一次事件。

我們常用的ACTION常量
public static final int ACTION_DOWN=0
作用:表示按下的狀態。

public static final int ACTION_ UP=1
作用:表示抬起的狀態。

public static final int ACTION_MOVE=2
作用:表示移動的狀態。
特別注意
ViewGroup里的onInterceptTouchEvent默認值是false這樣才能把事件傳給View里的onTouchEvent.

ViewGroup里的onTouchEvent默認值是false。

View里的onTouchEvent返回默認值是true.這樣才能執行多次touch事件

移動開發者的聚集地,公眾號“非著名程序員”,每天一篇原創技術分享和移動互聯網知識分享,微信公眾號:smart_android,頭條號和百度百家賬號都是“非著名程序員”。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65902.html

相關文章

  • Docker習之Dockerfile 構建鏡像(3)

    摘要:我們可以了解到,鏡像的定制實際上就是定制每一層所添加的配置文件。指令之指令的目的就是來指定基礎鏡像。指令之指令是用來執行命令行命令的。由于命令行的強大能力,指令在定制鏡像時是最常用的指令之一。構建鏡像這里我們使用了命令進行鏡像構建。 我們可以了解到,鏡像的定制實際上就是定制每一層所添加的配置、文件。如果我們可以把每一層修改、安裝、構建、操作的命令都寫入一個腳本,用這個腳本來構建、定制鏡...

    Lavender 評論0 收藏0
  • NodeAPI習之Stream

    摘要:回調函數將接收到一個對象。要禁止這一默認行為,選項應該指定為。一般來說,建議開發人員避免使用事件和方法,使用或事件代替。事件在寫入數據出錯或者使用管道出錯時觸發,事件發生時,回調函數僅會接收到一個參數。注意事件發生時,流并不會關閉。 Stream 流可以是可讀的、可寫的、或者是可讀寫的。所有的流都是EventEmitter的實例。 對象模式 所有使用Node.js API創建的流對象都...

    laznrbfe 評論0 收藏0
  • React習之認識Flux架構模式

    摘要:是用戶建立客戶端應用的前端架構,它通過利用一個單向的數據流補充了的組合視圖組件,這更是一種模式而非正式框架,你能夠無需許多新代碼情況下立即開始使用。結構和數據流一個單向數據流是模式的核心。 Flux是Facebook用戶建立客戶端Web應用的前端架構,它通過利用一個單向的數據流補充了React的組合視圖組件,這更是一種模式而非正式框架,你能夠無需許多新代碼情況下立即開始使用Flux。 ...

    EasonTyler 評論0 收藏0

發表評論

0條評論

Anonymous1

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<