Android の タッチイベント とか

今や重なりあったアクション付きのUIが流行りとなり, 当然「タッチイベント」も重なり合ってくるわけでのメモ.

devsbuild_it_sites_default_files_PRE_andevcon_mastering-the-android-touch-system_pdf

andevcon_mastering-the-android-touch-system.pdf

「親から子(背面から前面)に伝わっていく」ので, activity → view.

Android のタッチイベントを理解する(その1) - Unmotivated

なので, 早めに捉えると範囲が広く, 遅めに捉えると限定的で実装手間も少なくできる.

Android: Difference between onInterceptTouchEvent and dispatchTouchEvent? - Stack Overflow

親で伝搬を止める.

...
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    boolean response = super.onInterceptTouchEvent(event);
    float x = event.getX();
    switch (event.getActionMasked()) {
    case MotionEvent.ACTION_DOWN:
        mTouchX = x;
        break;
    case MotionEvent.ACTION_MOVE:
        float dX = Math.abs(x - mTouchX);
        if (dX > minSwipeDistance)
            return true;
        break;
    }
    return response;
}
...

子から伝搬を止めるのをやめさせる.

...
findViewById(R.id.button)
    .getParent()
    .requestDisqllowInterceptTouchEvent(true);
...

ほとんどのユーザからのイベントは重なっていることを実感するなど.

Correctly detecting a swipe on a GridView placed inside a ViewPager in Android - Stack Overflow


関連ワード:  Androidライブラリ開発