Android中事件处理机制---完
来源:互联网 发布:守望先锋数据面板 编辑:程序博客网 时间:2024/06/07 00:40
Android中事件处理机制
Android事件处理机制中包括事件的分发、事件的拦截和事件的处理。最后还有一个怎么使一个布局的父布局不去拦截事件,事件分发本身具有消费事件的能力
事件的消费指的是,这个事件被完结了,完全不存在了。
- 事件的分发
public boolean dispatchTouchEvent(MotionEvent event)- 属于View的方法,用来通知下面的视图,屏幕产生了触摸事件
- 返回值:
- true:表示事件分发到此结束,不再调用拦截和处理,事件被消费了(屏蔽掉了这次事件???)
- false:事件分发结束,交由上一层的视图或者Activity的onTouchEvent来处理
- 如果是Activity返回了false,事件交由系统来处理或消费
- 如果是普通视图,交由上一层的视图(处于第三层视图及以下或者Activity的onTouchEvent来处理(处于第二层视图),Activity属于第一层视图
- super:交由本层onInterceptTouchEvent处理
- 如果是Activity,交给下一层视图的事件分发如果是View,直接调用事件处理onTouchEvent()
- 事件的拦截
public boolean onInterceptTouchEvent(MotionEvent ev)- 属于ViewGroup的方法,用来拦截事件,不再对其下的子视图进行事件的分发(触摸屏幕事件到当前布局结束,布局中的所有子控件都无法接收到触屏事件)。
- 返回值:
- true:说明当前视图要拦截事件,不再对下面的视图进行分发,直接由当前视图的onTouchEvent事件来处理
- false:交由下一个视图的dispathTouchEvent来处理,不再拦截
- super:和false结果一样
事件的处理
public boolean onTouchEvent(MotionEvent event)- 处理屏幕单击事件,前提是能够接受到事件分发
- 返回值:
- true:响应了该事件,并且已消费。此事件终结,不再进行后续的冒泡
- false:该层响应了这个事件,并没有消费,事件会继续向上层冒泡,且由上层的View的onTouchEvent()进行处理
- super:和false效果一样
如何让父布局不再拦截事件
public void requestDisallowInterceptTouchEvent(boolean disallowIntercept)
eg. parentView.requestDisallowInterceptTouchEvent(true)
一个事件从产生到消亡的整个过程
0 0
- Android中事件处理机制---完
- Android事件处理机制
- android 事件处理机制
- Android事件处理机制
- Android事件处理机制
- android事件处理机制
- android事件处理机制
- Android事件处理机制
- android事件处理机制
- android事件处理机制
- Android 事件处理机制
- Android事件处理机制
- android事件处理机制
- android 事件处理机制
- android事件处理机制
- android事件处理机制
- Android中事件处理机制一分钟理清思路
- Android 输入事件处理机制
- 推荐useritem矩阵归一化
- RestEasy测试Http-API
- fork()与vfork()的区别
- Volley使用略记
- 浅析三级分销模式
- Android中事件处理机制---完
- [OpenGL ES 08]Per-Pixel Light及卡通效果
- 【Redis入门】常用工具
- SpiderMonkey执行JIT的时机
- 设计模式:抽象工厂模式
- LoadRunner压力测试时监控服务器Linux的资源情况
- ffmpeg 最简单的水印功能
- html背景图 全屏 自适应 css
- js中创建UUID