ジェスチャー無効関連

制御するコントローラとして、アプリをつかう場合、画面のすみから中央にむけて指を動かすなど、ジェスチャーが作動してしまう可能性がたかくて、するとアプリが切り替わってしまって、作業が大きく中断されてしまい、むっとなります。それを起こさないために、領域を無効にしたいとおもいました。

ひとつひとつのViewに対して指示をだして、動いているようにみえます。ひょっとしたら、Windowに対して処置する必要があるかもしれないので、調べてみてください。あと、あまりに広い範囲だと、指定できないみたいです。

    @Override
    public void onPause() {
        setIgnoreGesture(false);
        super.onPause();
    }
    public void onResume() {
        super.onResume();
        setIgnoreGesture(true);
    }

    public void setIgnoreGesture(boolean ignore) {
        setIgnoreGesture(binding.seekBarBottom, ignore);
        setIgnoreGesture(binding.seekBarRight, ignore);
        setIgnoreGesture(binding.recyclerButtons, ignore);
    }
    public void setIgnoreGesture(View view, boolean ignore) {
        ArrayList<Rect> set = new ArrayList<>();
        if (ignore) {
            int width = view.getWidth();
            int height = view.getHeight();
            Rect rect = new Rect(0, 0, width, height);
            set.add(rect);
        }
        view.setSystemGestureExclusionRects(set);
    }
広告を表示しています。

2025思い出せる範囲トップ