2

我遇到了标题中描述的问题,想知道我做错了什么还是这是另一个 android 故障。以下是有关问题的更多信息:我有一个图像视图,支持双击缩放和捏缩放,但想使用单击在操作栏中显示图像标题(实际上调用 getActionBar().show () 和隐藏())。带有图像的视图也在 ViewPager 中(在支持库 v4 中找到)。我目前正在做以下事情:在viewpager中我这样做是为了在通过捏缩放缩放时停止页面更改:

// view in the fragment is a reference to MyZoomableImageView
viewPager.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
                 currentFragment.view.dispatchTouchEvent(event);
             if (currentFragment.view.downloaded && (!currentFragment.view.whole || event.getPointerCount() > 1)) {
                return true;
            } else {
                return false;
            }

        }
    });

在我的 customImageView 中,我添加了带有此侦听器的手势检测器:

public class GestureListener extends GestureDetector.SimpleOnGestureListener {

    @Override
    public boolean onDoubleTap(MotionEvent e) {
                    Log.d(TAG, "DOUBLE");
        zoom();
        return true;
    }


    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
                Log.d(TAG, "SINGLE");
            Activity a = ((Activity) context);
            ActionBar action = a.getActionBar();
            if (action.isShowing()) {
                action.hide();
            } else {
                action.show();
            }
        }
        return true;
    };

任何人都可以发现我做错了什么以及为什么双击后会同时记录 SINGE 和 DOUBLE 按摩。

PS.我确实通过使用事件侦听器调用之间的时间差来解决这个问题,例如 if (!((System.currentTimeMillis() - start) < 500)) 但这只是感觉不对,我想有一个正确的方法来做这个。

4

2 回答 2

2

我可能是错的,这需要确认。但是,OnSingleTapConfirmed()只有在 android 确定单击已发生时才会消耗(通常这需要一段时间)。我认为使用OnSingleTapUp()会更好。

来自http://developer.android.com/reference/android/view/GestureDetector.SimpleOnGestureListener.html

公共布尔 onSingleTapConfirmed(MotionEvent e)

发生单击时通知。

与 onSingleTapUp(MotionEvent) 不同,这只会在检测器确信用户的第一次点击之后没有导致双击手势的第二次点击之后调用。

于 2013-06-26T14:40:36.987 回答
0

你有没有可能

设置/辅助功能/放大手势

打开?当这些被打开时,双击将(在大多数情况下)报告为 onSingleTapConfirmed()。另请参阅此错误:

https://code.google.com/p/android/issues/detail?id=185872

于 2016-02-02T16:48:34.363 回答