【问题标题】:Android Gestures SingleTapConfirmed is slowAndroid手势SingleTapConfirmed很慢
【发布时间】:2020-08-31 03:58:45
【问题描述】:

我想在单击和双击按钮时触发两个动作。我已经使用下面的 GestureDetector 实现了它,但是当按钮被点击一次时,动作会有很大的延迟。我认为它会等待第二次点击,如果没有第二次点击,那么只会确认一次点击。我该如何解决这个延迟,因为它对我的应用程序非常重要。

    private GestureDetector gestureDetector = new GestureDetector(getApplicationContext(), new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onDoubleTap(MotionEvent e) {
            //enableShift();
            Log.d("TAGG: ", "Double Tap");
            return true;
        }

        @Override
        public boolean onSingleTapConfirmed(MotionEvent event) {
            Log.d("TAGG: ", "Single Tap");
            return false;
        }
    });

【问题讨论】:

    标签: android android-gesture


    【解决方案1】:

    我遇到了同样的问题,我通过 onSignleTapUp 实现了您所需要的。看起来SimpleGestureListener 在触发onSingleTapConfirmed 之前等待的时间有点太长(对我来说是 260 毫秒)。这肯定是有充分理由的。

    您可以使用标志 isOnDoubleTapTriggered 调整您的自定义 GestureDetector.SimpleOnGestureListener()

    private var isOnDoubleTapTriggered = false
    
    
    override fun onSingleTapUp(event: MotionEvent): Boolean {
        runDelayed(120) { // You can adjust the time here but 120 was the best for me
            if (!isOnDoubleTapTriggered) {
                //enableShift();
            }
            isOnDoubleTapTriggered = false
        }
        return true
    }
    
    
    override fun onDoubleTap(event: MotionEvent): Boolean {
        isOnDoubleTapTriggered = true
        //enableSmthgElse();
        return true
    }
    

    技巧说明:

    • onSingleTapUp 被触发时开始计数
    • 如果onDoubleTap在您的延迟之前没有被触发,您可以认为单击已“确认”
    • 将您的标志重新设置为false(主要是在您的第二次点击事件之后)

    最后提示你延迟:

    private fun runDelayed(timeMs: Long, block: () -> Unit) {
        Timer().schedule(
            object : TimerTask() {
                override fun run() = block()
            },
            timeMs
        )
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多