Что означает логическое значение, возвращаемое из метода обработки событий в Android
В android большинство методов прослушивателя событий возвращают логическое значение. Что означает истинное/ложное значение? что это приведет к событиям подпоследовательности?
class MyTouchListener implements OnTouchListener {
@Override
public boolean onTouch(View v, MotionEvent event) {
logView.showEvent(event);
return true;
}
}
Относительно вышеприведенного примера, если return true в методе onTouch, я обнаружил, что каждое событие касания (DOWN, UP, MOVE и т.д.) было зафиксировано в соответствии с моим журналом > . Напротив, если return false, то происходит событие DOWN. Поэтому кажется, что return false предотвратит распространение события. Правильно ли я?
Кроме того, в OnGestureListener многие методы также должны возвращать логическое значение. Имеют ли они то же значение?
Ответы
Ответ 1
Если вы возвращаете true
из события ACTION_DOWN
, вас интересуют остальные события в этом жесте. "Жест" в этом случае означает все события до окончательного ACTION_UP
или ACTION_CANCEL
. Возврат false
из ACTION_DOWN
означает, что вы не хотите, чтобы событие и другие представления имели возможность обрабатывать его. Если у вас есть перекрывающиеся представления, это может быть представление о сестре. Если нет, то это будет пузырь до родителя.
Ответ 2
Из документации: http://developer.android.com/reference/android/view/View.OnTouchListener.html#onTouch(android.view.View, android.view.MotionEvent)
"Истина, если слушатель потребляет событие, в противном случае - false."
Если вы вернете true, событие будет обработано. Если false, он перейдет на следующий уровень вниз.
Ответ 3
Логическое значение определяет, потребляется ли событие или нет.
Да, вы правы. Если вы вернете false, следующий прослушиватель обработает событие. Если он возвращает true, событие будет потребляться вашим слушателем и не отправлено следующему методу.
Ответ 4
Я потерял почти один день при поиске и устранении неисправностей, но я узнал, что моя функция onTouch вызывается 2 раза при использовании true и 1 раз при использовании false.