Я пытаюсь объединить две операции в прослушивателе Android OnTouch, в результате чего одно касание будет выполнять одно, а два касания - другое. Я использую код, чтобы определить, урезал ли пользователь экран, чтобы разрешить его масштабирование. Я изменил ответ, приведенный в предыдущем ответе, и это то, что я придумал (я удалил лишний код, поскольку я хотел проиллюстрировать части, которые работают, по сравнению с теми, которые не работают):
myView.setOnTouchListener( new View.OnTouchListener()
{
myView.setOnTouchListener( new View.OnTouchListener()
{
private GestureDetector gestureDetector = new GestureDetector(getApplicationContext(), new GestureDetector.SimpleOnGestureListener()
{
@Override
public boolean onDoubleTap(MotionEvent e) {
// Stuff in here doesn't work
}
});
@Override
public boolean onTouch( View v, MotionEvent event )
{
if (event.getPointerCount() > 1)
{
// pinch to zoom stuff omitted - this works
}
else
{
if (action == MotionEvent.ACTION_UP)
{
//single touch logic
// code omitted
}
}
}
});
}
Детали в GestureListener не работают, но код в OneTouch работает
У меня лично были сомнения по поводу объединения детектора жестов в OnTouchListener, так как он казался немного неуклюжим, но ответ на предыдущем форуме ( DoubleTap в Android ) казался довольно аккуратным.
Существует еще одна проблема с кодом: всякий раз, когда я выполняю «действие вверх» и освобождаю пальцы от экрана, активируется код с надписью «логика одного касания». Как это может быть, когда код для логики с одним касанием отделен от логики с двойным касанием / пинч? Кажется, у меня здесь две проблемы!