按键事件处理
按键捕获先后顺序:驱动层->系统层->library层->框架层->应用层。
应用层return false,事件会继续向底层传递。
应用层return true,事件终止不再传递。
调用super方法,Activity会决定事件处理方式以及是否向底层传输。
return false和return true会导致按键onKeyLongPress事件无法处理,用return true拦截事件时需要添加event.startTracking()才能触发onKeyLongPress事件,系统不会处理长按事件。
Home键一般交由系统处理,应用层一般不处理。
触摸事件处理
onInterceptTouchEvent()进行触摸事件拦截。
onTouch方法的return true可以拦截事件,return false会将事件进行逐级传递;最顶层return false之后,会将事件交由上级容器进行处理,当前不会再处理任何触摸事件(Down、Move、Up),而return true可以继续处理其他事件。
调用super方法后,则由Activity决定事件处理方式。
事件传递方式,从上往下传递,从下往上通知。
requestDisallowInterceptTouchEvent(true),在onTouchEvent中可以设置不拦截事件(ListView与ScrollView的滑动事件冲突时,可以如此设置)