Androidにおけるタッチイベント処理を全体的に把握する
3335 ワード
まずいくつかの関数を見ます.Androidのタッチイベントの処理というと、多くの人はすぐにいくつかの頭痛の関数を思い出します.ここに挙げて、あなたの神経を刺激します.
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
うん、今日はこの四つの関数の役割と呼出関係を見て、タッチイベントの処理メカニズムを整理します.一.まずその中の二つを解決します.
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev);
}
1.1まず明確にすると、Androidのイベントの配布と処理はトップダウン、すなわちタッチイベントの最初の一回は必ず最外層のViewに送られます.1.2ここで例を挙げます.窓の複数のView Groupが大家族を構成していると仮定します.その中で一番外側の階のView世代が一番長く、一番奥の階のView世代が一番小さいと仮定して、タッチイベントイベントを一つのリンゴにたとえます.もし事件が起こったら、次のようなことが起こります.リンゴの転送過程:
おじいさん――お父さん――孫さん.
おじいさんの世代がリンゴを食べたら、私たちはこの事件を消費すると言います.
下図を見てください
詳しく分析します..
ここまでは、Androidにおけるメッセージ伝達の仕組みを全体的に把握してきたのではないかと思いますが、もう少し詳しく調べてみます.