タッチイベントの配布(概要&基礎編)

2617 ワード

全体的な考え方の概要
Androidにおけるアプリケーション層タッチイベントの配布は,Activityから始まったと考えられる.Activityは、タッチイベントを受信すると、そのActivityに含まれるViewツリーにイベントを配信し始め、対応するViewを見つけてタッチイベントを処理しようとする.
よくある例を挙げてみましょう.あるアプリを開発しています.ある日、ボスは突然需要を増やそうとした.そこで人を探してやりました.CTO(Activity)が見つかり、需要を話した後、CTOは試してみる価値があると考えています.このニーズをAndroid開発マネージャ(ViewGroupに相当)に割り当てます.Android開発マネージャは、ニーズを聞いた後、自分のチームでこの方面でベテランのAndroidエンジニア(View)を探してこのことを処理します.Android開発エンジニアは任務を受けた後、すぐに着工して仕事をしました.これで、この需要はついに誰かがしました.このAndroidエンジニアに消費され、需要伝達プロセスが終わりました.
この例は後で使いますよ
タッチイベント各APIの紹介
本稿では,タッチイベントAPIのいくつかの重要なAPIについて紹介し,タッチイベント配信について基本的な概念を持たせ,次のタッチイベント配信プロセス分析を理解するために理解の難しさを低減する.
  • ActivityのタッチイベントAPI
  • public boolean dispatchTouchEvent(MotionEvent ev);
    public boolean onTouchEvent(MotionEvent ev);
    
  • ViewGroupのタッチイベントAPI
  • public boolean dispatchTouchEvent(MotionEvent ev);
    public boolean onTouchEvent(MotionEvent ev);
    public boolean onInterceptTouchEvent(MotionEvent ev);
    
  • ViewのタッチイベントAPI
  • public boolean dispatchTouchEvent(MotionEvent ev);
    public boolean onTouchEvent(MotionEvent ev);
    

    1、dispatchTouchEvent-------------(Activity、ViewGroup、View)
    名前の通り、この方法はタッチイベントのスケジューリングを担当し、総スケジューリング官である.下部ではタッチイベントがActivityに渡され、ActivityではイベントがViewGroupに渡され、ViewGroupではイベントがViewGroupまたは別のViewGroupに渡され、インタフェースを呼び出すことによって実現されます.dispatchTouchEvent()を理解することはAndroidイベントのメカニズムを理解する鍵である.その中で、最も重要で複雑なのはViewGroupのdispatchTouchEvent()です.
    onInterceptTouchEvent()およびonTouchEvent()は、インタフェースの実装方法で呼び出される.
    dispatchTouchEvent()を理解する戻り結果は、現在のViewのonTouchEventおよび下位ViewのdispatchTouchEventメソッドによって影響され、イベントが消費されたかどうかを示します.
    2、onInterceptTouchEvent-------------(ViewGroup)
    タッチイベントをブロックするインタフェースであり、結果として、あるイベントの下位Viewツリーへの伝達をブロックするかどうかを示す.
    このメソッドはViewGroupクラスにのみ存在し、Viewクラスにはこのメソッドはありません.
    ViewGroupのdispatchTouchEventメソッド内で呼び出され、イベントが下に転送され続けるかどうかを判断します.現在のViewGroupがイベントをブロックしている場合、同じイベントシーケンスでこのメソッドは再び呼び出されず、結果は現在のイベントがブロックされているかどうかを示します.デフォルトではブロックされずfalseが返されます.1つのViewは最下位にしか存在しないため、サブコントロールは存在しないため、この方法はありません.
    3、onTouchEvent-------------(Activity、ViewGroup、View)
    イベントを処理するために使用され、タッチイベントの処理者がdispatchTouchEventメソッドで呼び出し、クリックイベントを処理するために使用される.Activity,View Group,Viewにかかわらず,タッチイベントの処理は基本的にonTouchEvent()で行われる.この方法はtrueを返すと、タッチイベントが処理されたことを示す.あるいは、言い換えれば、タッチイベントが消費されたことを示す.そうでなければ、タッチイベントが消費されていないことを示します.
    返された結果は、現在のイベントが消費されたかどうかを示すために使用されます.現在のイベントを消費しないと、同じイベントシーケンスで現在のViewはイベントを再受信しません.
    を返します.結果は、現在のイベントが消費されているかどうかを示します.消費されていない場合、同じイベントシーケンスでは、現在のViewはイベントを再受信できません.
    参考文献
    http://wangkuiwu.github.io/2015/01/01/TouchEvent-Introduce/