Android: разница между onInterceptTouchEvent и dispatchTouchEvent? - PullRequest
230 голосов
/ 06 марта 2012

В чем разница между onInterceptTouchEvent и dispatchTouchEvent в Android?

В соответствии с руководством разработчика Android, оба метода могут использоваться для перехвата события касания (MotionEvent), но в чем заключаетсяразница?

Как onInterceptTouchEvent, dispatchTouchEvent и onTouchEvent взаимодействуют вместе в иерархии видов (ViewGroup)?

Ответы [ 14 ]

1 голос
/ 06 марта 2012

Основное отличие:

• Activity.dispatchTouchEvent (MotionEvent) - это позволяет вашей активности перехватывать все сенсорные события, прежде чем они будут отправлены в окно.
• ViewGroup.onInterceptTouchEvent (MotionEvent) - это позволяет ViewGroup наблюдать за событиями, когда они отправляются дочерним представлениям.

0 голосов
/ 11 сентября 2017
public boolean dispatchTouchEvent(MotionEvent ev){
    boolean consume =false;
    if(onInterceptTouchEvent(ev){
        consume = onTouchEvent(ev);
    }else{
        consume = child.dispatchTouchEvent(ev);
    }
}
0 голосов
/ 25 сентября 2015

Маленький ответ:

onInterceptTouchEvent предшествует setOnTouchListener.

0 голосов
/ 04 декабря 2013

И Activity, и View имеют методы dispatchTouchEvent () и onTouchEvent. В ViewGroup также есть эти методы, но есть другой метод с именем onInterceptTouchEvent.Тип возврата этих методов логический, вы можете управлять маршрутом отправки через возвращаемое значение.

Отправка события в Android начинается с Activity-> ViewGroup-> View.

...