2

嗨,我在 LinearLayout(垂直方向)中有两个图像视图。我正在为两个 Imageviews 设置 setOnTouchListener。这样我就可以观察到多点触控缩放以及 ImageViews 的所有拖动。当我尝试实现 OnDoubletapListener 时,问题就来了。OnDoubleTapListener 只能在不使用 setOnTouchListener 的情况下工作。

但是,如果我评论 setOnTouchListner 然后我可以执行双击..

这两个恐惧不能同时工作吗??????

如果你想要我也可以提供源代码..请帮助

Ankit Verma

4

3 回答 3

2

我也遇到过同样类型的问题......我用这种方式解决......

如果您使用 android 多点触控控制器http://code.google.com/p/android-multitouch-controller/进行多点触控

和 GestureDetector http://www.41post.com/4194/programming/android-detecting-double-tap-events双击

在 MultiTouchController.java 中更新此步骤

--> 导入

  import android.view.GestureDetector.OnDoubleTapListener;

  import android.view.GestureDetector.OnGestureListener;

--> 实施

 public class MultiTouchController<T> implements OnGestureListener{

-->

public MultiTouchController(MultiTouchObjectCanvas<T> objectCanvas2, boolean handleSingleTouchEvents) {

           //....

    gd = new GestureDetector(this);

    // set the on Double tap listener
    gd.setOnDoubleTapListener(new OnDoubleTapListener() {
        @Override
        public boolean onDoubleTap(MotionEvent e) {
            // set text color to green
            Log.d("CLICK", "double taped");



            return false;
        }

        @Override
        public boolean onDoubleTapEvent(MotionEvent e) {
            // if the second tap hadn't been released and it's being moved
            if (e.getAction() == MotionEvent.ACTION_MOVE) {
                Log.d("CLICK", "double tap event ACTION_MOVE");
            } else if (e.getAction() == MotionEvent.ACTION_UP)// user
                                                                // released
                                                                // the
                                                                // screen
            {
                Log.d("CLICK", "double tap event ACTION_UP");
            }
            return false;
        }

        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            // set text color to red
            Log.d("CLICK", "single taped");

            return true;
        }
    });

--> 在 onTouch(MotionEvent 事件) 将触摸事件设置为 gd

   public boolean onTouchEvent(MotionEvent event) {

    gd.onTouchEvent(event);

    try {

               //.....

不要更改任何其他文件。

现在测试...希望您解决了问题...必须回复...

于 2011-12-03T08:01:47.233 回答
1

嘿,我不知道你是否仍然遇到同样的问题,但我找到了解决它的方法。事实上,我只是为多点触控事件实现了 OnTouchListner,并测量了两次调用 ACTION_DOWN 之间的时间。如果该时间小于某个值,我认为这是一次双击,因此我执行了这些操作。希望有帮助。如果您找到了实现 OnTouchListner 和 GestureDetector.OnDoubleTapListener 的方法,请告诉我!

于 2011-07-13T19:16:28.647 回答
0

请查看以下链接,可能对您有所帮助..实现 GestureDetector http://android-journey.blogspot.com/2010/01/android-gestures.html

GestureDetector.OnDoubleTapListener {用于通知双击或确认单击发生时的侦听器。}

于 2011-01-05T12:58:11.107 回答