Android多点触摸和双击一起工作以进行imageview

时间:2011-01-05 12:33:12

标签: android double multi-touch tap

您好 我在LinearLayout(垂直方向)中有两个图像视图。我为两个Imageview设置了setOnTouchListener。 这样我就可以观察到Multi touch zoom以及ImageViews的所有拖动。 当我尝试实现OnDoubletapListener时出现问题。 OnDoubleTapListener仅在不使用setOnTouchListener的情况下工作。

但是,如果我评论setOnTouchListner,那么我可以执行Double Tap ..

这两个特征不能同时起作用吗?????

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

Ankit Verma

3 个答案:

答案 0 :(得分:2)

我也面临同样的问题......我用这种方式解决了......

如果你使用android mutitouch控制器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{

- &GT;

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;
        }
    });

- &GT;在onTouch(MotionEvent事件)中将触摸事件设置为gd

   public boolean onTouchEvent(MotionEvent event) {

    gd.onTouchEvent(event);

    try {

               //.....

请勿更改任何其他文件。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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