dispatchDraw,dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent,onMesure,onLayout
来源:互联网 发布:java 日志组件 编辑:程序博客网 时间:2024/05/12 08:36
很多朋友使用见到如标题所示的关键字时就一头雾水,不知道是它们是做什么的。接下来我将逐一介绍他们的用处,以及适用场景。
介绍以下前提的场景是,我们在继承ViewGroup里使用这些方法,也就是以下方法大部分只有在重写容器组件时才会用到,一般继承容器类实现滑动效果,或者具有扩展功能的组件。我们以下的示例如ViewGroup1包含ViewGroup2,ViewGroup2包含两个View,分别为View01,View02来讲解,依次关系为ViewGroup01->ViewGroup02->View01和View02。
简述
当TouchEvent发生时,首先Activity将TouchEvent传递给最顶层的View, TouchEvent最先到达最顶层 view 的 dispatchTouchEvent ,然后由 dispatchTouchEvent 方法进行分发,如果dispatchTouchEvent返回true ,则交给这个view的onTouchEvent处理,如果dispatchTouchEvent返回 false ,则交给这个 view 的 interceptTouchEvent 方法来决定是否要拦截这个事件,如果 interceptTouchEvent 返回 true ,也就是拦截掉了,则交给它的 onTouchEvent 来处理,如果 interceptTouchEvent 返回 false ,那么就传递给子 view ,由子 view 的 dispatchTouchEvent 再来开始这个事件的分发。如果事件传递到某一层的子 view 的 onTouchEvent 上了,这个方法返回了 false ,那么这个事件会从这个 view 往上传递,都是 onTouchEvent 来接收。而如果传递到最上面的 onTouchEvent 也返回 false 的话,这个事件就会“消失”,而且接收不到下一次事件。
1.onMesure:当ViewGroup02显示View01和View02显示前,需要对View01和View02进行测绘,来确定他们的大小,此测绘过程是在onMesure里面处理,此onMesure是在父 类 mesure里调用的,mesure是final的,不允许重载,但在mesure里面调用了onMesure抽象方法。
2.onLayout:当onMesure测绘大小后,就将要把测绘的VIew01和View02放置到相应的位置,View01放在左边,View02放在右边。在这个方法要对子控件进行遍历布局。
3.dispatchDraw:此方法在draw里面调用,就是把绘画工作分发给子控件。如ViewGroup02有两个View分别为View01和View02,则在ViewGroup02里面重写dispatchDraw分发给View01和View02进行绘制子控件。
4.dispatchTouchEvent:此方法对事件的分发,这个方法在所有事件获取之前调用此方法。
5.onInterceptTouchEvent:用于对事件的拦截,如果return false,则将事件传递给子控件的onTouchEvent,如果返回true,则直接调用本身的onTouch。
6.onTouchEvent:如果return false,则调用子控件的触摸事件,如果return true,则不向下传递。
以上内容简单的说了下基本功能,详细介绍,请等待,上班时间来不急写喽
- dispatchDraw,dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent,onMesure,onLayout
- dispatchTouchEvent,onTouchEvent,onInterceptTouchEvent 解析
- dispatchTouchEvent,onTouchEvent与onInterceptTouchEvent
- dispatchTouchEvent & onTouchEvent & onInterceptTouchEvent
- dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent
- 【转载】dispatchTouchEvent,onTouchEvent与onInterceptTouchEvent
- android的dispatchTouchEvent onInterceptTouchEvent onTouchEvent
- Android dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent Detailed
- Android dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent详解
- dispatchTouchEvent vs onInterceptTouchEvent vs onTouchEvent
- 浅谈dispatchTouchEvent,onTouch,onTouchEvent,onInterceptTouchEvent
- Android onTouchEvent,dispatchTouchEvent,onInterceptTouchEvent分析
- Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的理解
- Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的详解
- Android中dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent浅析
- Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent浅谈
- Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的理解
- Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的理解
- 机器学习(一)之Linear Regression
- .NET 对ORA-01000问题的正确处理
- JAX-WS使用wsgen和wsimport从Java创建WebService
- 结构体中的函数指针与函数
- 【Visual C++】游戏开发笔记之一——API函数、DirectX的关键系统
- dispatchDraw,dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent,onMesure,onLayout
- 【java工具类】数据库操作时ResultSet的一个替代
- 《读大学,究竟读什么》新版上册内容摘录:英语到底应该怎么学
- __declspec(dllexport) & __declspec(dllimport)(转)
- CENTOS 性能优化
- JAVA中获取HashMap集合中数据的方法
- CMDN CLUB#27期:移动教育主题沙龙PPT分享
- 01背包
- Thirft框架介绍