2013-11-19 3 views
0

Я столкнулся с ситуацией.Выполнение onTouchListener и onGestureLitener одновременно

Я написал класс, реализующий onTouchListener, который я зарегистрировал в режиме просмотра (GLSurfaceView, если быть точным), и я использовал его для извлечения всей информации о касательных событиях. . И это мне очень хорошо. И реализация метода onTouch означает, что событие обрабатывается тогда и там, и оно не распространяется вниз.

Но в последнее время мне нужно реализовать функциональность салфетки для моей игры. И мне нужно, чтобы я использовал onTouchEvent для просмотра. Но поскольку мой класс реализации onTouchListener уже реализует метод onTouch, поэтому onTouchEvent не будет вызываться. И я хочу сохранить свою реализацию onTouchListener. Скажите, пожалуйста, как решить эту проблему.

Manish

ответ

0

В своем классе поместить следующее:

//not necessarily OnCreate but put it in whatever constructor your class uses 
OnCreate(Context context){ 
    mGestureDetector = new GestureDetector(context, new CustomGestureListener()); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    mGestureDetector.onTouchEvent(event); 
    return super.onTouchEvent(event); 
} 

private final GestureDetector mGestureDetector; 

private class CustomGestureListener extends SimpleOnGestureListener { 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     //get the fling  
    } 
} 

Это позволяет onTouchEvent выполнить, но он также проверяет наличие события жеста, а также позвонив по телефону детектор жест внутри onTouchEvent.

Смотрите также этот ответ: How to set OnTouchListener for the entire screen?

+0

Спасибо за быстрый ответ. Итак, вы имеете в виду, что мне нужно поставить выше код в моем классе, реализуя onTouchListener. – Mandroid

+0

@ user2444661 да, это то, что я имею в виду, так как у вас есть ваш слушатель прикосновений в настраиваемом классе GLSurfaceView, поставьте этот код там. Просто не забудьте поставить код, который у меня есть в OnCreate внутри конструктора вместо поверхностного представления (я использовал этот код в активности с OnCreate). Не забудьте отметить это как ответ, если он сработает для вас. – anthonycr

+0

Привет ... на самом деле мой код прослушивателя не входит в пользовательский класс GLSurfaceView. У меня есть еще один класс для реализации onTouchListener. Теперь я хочу реализовать onGestureListener. – Mandroid

Смежные вопросы