Touch事件有关的处理方法主要由三个:
public boolean dispatchTouchEvent(MotionEvent ev)
public boolean onInterceptTouchEvent(MotionEvent ev)
public boolean onTouchEvent(MotionEvent event)
| 事件 | 含义 |
dispatchTouchEvent | 用来分派事件。 其中调用了onInterceptTouchEvent()和onTouchEvent(),一般不重写该方法 |
onInterceptTouchEvent | 用来拦截事件。 ViewGroup类中的源码实现就是{return false;}表示不拦截该事件, 事件将向下传递(传递给其子View); 若手动重写该方法,使其返回true则表示拦截,事件将终止向下传递, 事件由当前ViewGroup类来处理,就是调用该类的onTouchEvent()方法 |
onTouchEvent | 用来处理事件。 返回true则表示该View能处理该事件,事件将终止向上传递(传递给其父View); 返回false表示不能处理,则把事件传递给其父View的onTouchEvent()方法来处理 |
用的时候,需要重写一下,这三个方法主要在三种类被调用:
| 基类 | 例子类 | 拥有的方法 |
| 继承Activity(activity类) | MainActivity(因项目而异) |
dispatchTouchEvent,onTouchEvent |
| 继承ViewGroup(View容器) | RelativeLayout,FrameLayout,LinearLayout,AbsoluteLayout,ListView,ScrollView… |
dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent |
| 继承View(View控件) | Button,EditText,TextView,ImageView…. |
dispatchTouchEvent,onTouchEvent |
本文深入探讨了Android中处理触摸事件的三个关键方法:dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent,解释了它们的用途、含义及应用场景,帮助开发者更好地理解和应用这些方法。
168

被折叠的 条评论
为什么被折叠?



