【问题标题】:Double Tap in android View在android视图中双击
【发布时间】:2013-08-29 07:54:07
【问题描述】:

在一个视图中,我想同时检测单击和双击。它对我很好。我可以检测到单击和双击。请找到我的代码

@Override
    public boolean onTouch(View view, MotionEvent me) {
        // No dragging during animation at the moment.
        // TODO: Stop animation on touch event and return to drag mode.
        boolean result = true;
        result = gestureDetector.onTouchEvent(me);//return the double tap events
        if(result)
            return false;

switch (me.getAction()) {
        case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
}


private class GestureListener extends GestureDetector.SimpleOnGestureListener {

        private String fileName;



        @Override
         public boolean onSingleTapConfirmed(MotionEvent e) {
          // TODO Auto-generated method stub

          return false;
         }

        // event when double tap occurs
        @Override
        public boolean onDoubleTap(MotionEvent e) {

            float x = e.getX();
                float y = e.getY();
                if(player!=null && player.isPlaying())
                {
                    player.stop();
                }
                else
                {
                    setFileName(x);
                    player = new AudioPlayer(fileName);
                    player.play();
                }


            return true;
        }


    }

我在 Action_UP 事件中做一些代码。因此,即使我双击,对于第一次点击,ACTION_UP 事件也会被调用并执行相应的代码。我想防止这种情况发生。我怎样才能做到这一点。我只想确保仅在用户完成手势后才调用 ACTION_UP。不是他的局部手势之后。在这种情况下,它在第一次点击时被调用。

如何在 android 中完成这项工作?

谢谢

【问题讨论】:

  • 你的问题没有多大意义。虽然您不能更改MotionEvent,但您可以例如让每次按下/触摸它都会计算自上次按下以来的时间,然后根据该时间做不同的事情。
  • 检查我更新的答案;我相信您在 onXTap 函数中返回了错误的值

标签: java android android-gesture actionevent


【解决方案1】:

根据手势监听器documentation,您需要为onSingleTapConfirmedonDoubleTap 返回true。否则事件不会被消费,gestureDetector.onTouchEvent(me); 返回 false。

【讨论】:

  • 他在onSingleTapConfirmed 返回的内容与gestureDetector 返回的内容不同。
  • 这就是我说我不确定的原因。应该将其发布为评论...
  • 我检查了文档,似乎 onSingleTapConfirmedonDoubleTap 返回了错误的值。
猜你喜欢
  • 2015-03-01
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多