android - 在双击和滑动之间切换

标签 android swipe gesturedetector

我有一个 RelativeLayout 我正在将 TouchListener 放入使用 GestureDetector。我已经完成并且可以检测到双击,但是如何在 View 中添加滑动事件?

private void myTapEvent(){
        RlContent.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                return gestureDetector.onTouchEvent(event);
            }
        });

        gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onDoubleTap(MotionEvent e) {
                count++;
                doTaskHere();
                return true;
            }
            @Override
            public boolean onDown(MotionEvent e) {
                return true;
            }
        });
    }

实现滑动事件后,如何切换 a.) 只允许点击并禁止滑动 和 b.) 禁用点击并仅允许滑动

最佳答案

在您的 GestureDetector 监听器中,添加 onFling 方法。此外,要在它们之间切换,您需要在您的类中有一个可以切换的 boolean 变量。

private boolean mAllowSwipe = true; // True = swipe, no double-tap; false = double-tap, no swipe

// ...

private void switchGestureMode() {
    if (mAllowSwipe)
        mAllowSwipe = false;
    else
        mAllowSwipe = true;
}

// ...

private void myTapEvent(){
    // ...

    gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onDoubleTap(MotionEvent e) {
            if (mAllowSwipe) {
                return false;
            }
            count++;
            doTaskHere();
            return true;
        }
        @Override
        public boolean onDown(MotionEvent e) {
            return true;
        }
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            if (!mAllowSwipe) {
                return false;
            }
            // Your logic here
        }
    });
}

// ...

有一些使用fling滑动的例子herehere ,如果您在 Google 上搜索一下,还有很多。

关于android - 在双击和滑动之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11753355/

相关文章:

Xamarin 表单选项卡式分页滑动调用事件

android - 从 Fragment 对象访问 FragmentActivity 中的元素

Android:Slidingdrawer.lock() 阻止其余布局的触摸输入

Android:如何使滑动屏幕导航舒适

Android EditText 和 addTextChangedListener

android - 使用webview客户端计算给定url的webview下载的数据?

java - DownloadManager 未在状态栏中显示图标

xcode - Swift 如何做 uiview 从左到右滑动的外观

java - findViewByID() 不起作用。我应该怎么办?

java - 在 libGDX 中构建 GestureDetector