goo blog サービス終了のお知らせ 

タブレット用プログラムの書き止め

android OS & iPadOS の記録。

Fragment【基礎】ジェスチャーの組み込み。

2022-11-12 15:41:50 | Android studio 日記

OnTouchListener()の動作が良く分かっていなかった。
なのでActivityのLayoutビューにOnTouchListener()を設置してGestureDetectorCompatへ横流しをしていた。

何となくMotionEventの流れが末端のビューからActivity(親)まで遡って来るのをイメージできた。
OnTouchListener()の設置場所はFragmentのビューで良いらしい。

fragment_main.xml に View を書いて findViewById().setOnTouchListener()でMotionEventをフック。
return true; でイベント消費すれば、不本意な動作は抑制できそう。

 

public class MainFragment extends Fragment {

        // 省略
    private GestureDetectorCompat mDetector;
    private class MyGestureListener extends GestureDetector.SimpleOnGestureListener {

        // 省略
    }


    @Override
    public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        // 省略

        mDetector = new GestureDetectorCompat( requireContext(), new MyGestureListener() );

        // fragment_main.xml の id にOnTouchListener を設定して mDetector.onTouchEvent()を呼ぶ。
        requireActivity().findViewById(R.id.ui_mainFragment).setOnTouchListener( 
                new View.OnTouchListener() {
                    public boolean onTouch(View v, MotionEvent event) {
                        return mDetector.onTouchEvent(event);
                    }
                }
        );
        // 省略

    }


}

 

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 代替え AsyncTask 【基礎】 ... | トップ | メソッド【基礎】アプリ名と... »

Android studio 日記」カテゴリの最新記事