什么是触摸事件?

  • 触摸事件就是捕获触摸屏幕后产生的事件。Android为触摸事件封装了一个类:MotionEventMotionEvent类封装了很多东西,比如触摸点的坐标:event.getX()、点击的事件类型:MotionEvent.ACTION_DOWN,MotionEvent.ACTION_UP,MotionEvent.ACTION_MOVE

事件传递机制

布局

这是一个简单的布局:最外层是一个ViewGroupA,里面包含一个ViewGroupB,然后B里面包含一个子View MyView

我们先看事件传递及处理的3个方法:
1、public boolean dispatchTouchEvent(MotionEvent ev); 事件分发

2、public boolean onInterceptTouchEvent(MotionEvent ev); 事件拦截方法

3、public boolean onTouchEvent(MotionEvent ev); 处理触摸事件。

其中View是没有事件拦截的方法。

传递机制

事件传递顺序:触摸事件 ----> ViewGroupA---->ViewGroupB---->MyView
事件传递的时候,先执行public boolean dispatchTouchEvent(MotionEvent ev);方法,再执行public boolean onInterceptTouchEvent(MotionEvent ev);方法。如果父容器ViewGroup没有拦截,触摸事件将从最外面的根布局传递到最里面的子View

事件处理的顺序是:MyVIew---->ViewGroupB---->ViewGroupA事件处理(消费)执行public boolean onTouchEvent(MotionEvent ev);方法。

当父容器ViewGrouponInterceptTouchEvent(MotionEvent ev)方法返回false的时候,父容器都不会拦截事件,将会继续分发事件给它的子ViewGroup或者子View。当ViewGroup或者View的onTouchEvent(MotionEvent ev)返回true,将不再进行事件处理的传递,也就是不再传递给上级。

事件传递流程

事件传递就是这么简单的啦,但是要灵活运用却没那么简单。下一篇文章我们用这个原理做一些有趣的事。

更多相关文章

  1. android事件分发机制dispatch
  2. Android_Activity使用序列化传递对象
  3. Android事件总线:EventBus
  4. Android(安卓)监听返回按钮事件
  5. Android注入事件的三种方法比较
  6. Android(安卓)多次点击事件的触发方法
  7. Android的事件处理之通过回调实现跟随手指的小球
  8. [置顶] [Android基础]Android中如何使用Intent传递对象
  9. Android(安卓)多点触摸接口

随机推荐

  1. 分析Android 根文件系统启动过程(init守护
  2. Android项目签名详解
  3. Android(安卓)屏幕绘制机制及硬件加速
  4. 关于Android的Holo主题
  5. 深入理解Android(2)——理解Android中的JNI
  6. Android(安卓)Sensor详解(2)如何portingADS
  7. Android(安卓)实现简单媒体播放器功能
  8. Android知识体系总结之Android部分之Andr
  9. Android(安卓)App优化:内存优化、电量优化
  10. Android快速入门笔记