Android мультитач и двойное касание работают вместе для просмотра изображений - PullRequest
2 голосов
/ 05 января 2011

Привет У меня есть два просмотра изображений в LinearLayout (вертикальная ориентация).Я устанавливаю setOnTouchListener для обоих изображений.Таким образом, я могу наблюдать мультисенсорное масштабирование, а также перетаскивание ImageViews.Проблема возникает, когда я пытаюсь реализовать OnDoubletapListener.OnDoubleTapListener работает только без использования setOnTouchListener.

Однако, если я комментирую setOnTouchListner, тогда я могу выполнить Double Tap ..

Не могут ли две функции работать одновременно ?????

Если хотите, я также могу предоставить исходный код .. Pl Help

Ankit Verma

Ответы [ 3 ]

2 голосов
/ 03 декабря 2011

Я тоже столкнулся с той же проблемой типа .... Я решаю таким образом ...

Если вы используете контроллер Android Mititouch 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;
        }
    });

-> установить для сенсорного события значение gd в onTouch (событие MotionEvent)

   public boolean onTouchEvent(MotionEvent event) {

    gd.onTouchEvent(event);

    try {

               //.....

Не изменяйте никакие другие файлы.

А теперь тест ... Надеюсь, ты решил проблему ... должен ответить ...

1 голос
/ 13 июля 2011

Эй, я не знаю, застряли ли вы с той же проблемой, но я нашел способ обойти ее. Фактически, я просто реализую OnTouchListner для событий мультитача и измеряю время между двумя вызовами ACTION_DOWN. Если это время меньше определенного значения, я считаю, что это было двойное касание, и я последовательно выполняю действия. Надеюсь, это поможет. Если вы нашли способ реализовать как OnTouchListner, так и GestureDetector.OnDoubleTapListener, пожалуйста, дайте мне знать!

0 голосов
/ 05 января 2011

Пожалуйста, проверьте ссылку ниже, может быть полезно для вас ..implements GestureDetector http://android -journey.blogspot.com / 2010/01 / андроида-gestures.html

GestureDetector.OnDoubleTapListener {Слушатель, который используется для уведомления, когда происходит двойное или подтвержденное одно касание. }

...