学习android(一)
来源:互联网 发布:think.js 编辑:程序博客网 时间:2024/06/07 10:35
view 点击事件理解
记录view点击事件的相关知识:
- 点击事件的分发流程
- onClick,onTouch,onTouchEvent的调用情况
- MotionEvent中getAction、getActionMask、getActionIndex区别
dispatchTouchEvent
当点击屏幕时候,仙游最顶层的例如activity开始传递点击动作,一直传递到底viewGroup,再从viewGroup的dispatchTouchEvent开始处理事件分发,若dispatchTouchEvent返回false不做处理,则事件传递到下层view的dispatchTouchEvent处理;若返回true则终止传递。
onClick,onTouch,onTouchEvent的调用情况
当view没有设置Touch监听时候,调用onTouchEvent的方法,否则调用onTouch方法,onTouch会屏蔽掉onTouchEvent,如果设置了onClick的监听,则在onTouchEvent中调用onClick方法。
MotionEvent中getAction、getActionMask、getActionIndex区别
Android用一个32位的整型值表示一次TouchEvent事件,低8位表示touch事件的具体动作,比如按下,抬起,滑动,还有多点触控时的按下,抬起,这个和单点是区分开的,下面看具体的方法:
1 、getAction:触摸动作的原始32位信息,包括事件的动作,触控点信息
2 、getActionMasked:触摸的动作,按下,抬起,滑动,多点按下,多点抬起
3 、getActionIndex:触控点信息
以下是getAction和getActionMasked在SDK中的定义:
public final int getAction() { return mAction;}public final int getActionMasked() { return mAction & ACTION_MASK;}
如果mAction的值是在0x00到0xff之间的话。getAction()返回的值,和getActionMasked()的返回的值是一样的。 那什么时候返回的值是一样的呢? 即当mAction值大于0xff时,那什么时候会大于0xff呢?这就是,当有多点触控时,mAction的低8位即0x00到0xff用来表示动作的类型信息。 例如:MotionEvent#ACTION_DOWN的值是 0,即0x00。 MotionEvent#ACTION_UP的值是 1,即0x01。 但是,我们知道Android是支持多点触控的,那么怎么知道这个一个MotionEvent是哪一个触控点触发的呢?那么就还需要MotionEvent带有触控点索引信息。 Android的解决方案是:在mAction的第二个8位中存储。例如,如果mAction的值是0x0000,则表示是第一个触控点的ACTION_DOWN操作。如果mAction的值是0x0100呢,则表示是第二个触控点的ACTION_DOWN操作。第三个的ACTION_DOWN呢?相信你可以推出来是0x0200。 总而言之,mAction时的低8位(也就是0-7位)是动作类型信息。mAction的8-15位呢,是触控点的索引信息。(即表示是哪一个触控点的事件)。
0 0
- Android学习(一)
- Android学习(一)
- android 学习(一)
- Android 学习(一)
- Android学习(一)
- 学习android(一)
- Android学习(一)
- Android学习笔记(一)
- android 学习笔记(一)
- Android学习笔记(一)
- Android学习笔记(一)
- Android学习笔记(一)
- android学习笔记(一)
- android学习笔记(一)
- Android控件学习(一)
- Android AIR 学习(一)
- Android学习笔记(一)
- Android学习笔记(一)
- 内存泄漏全解析,从此拒绝ANR,让OOM远离你的身边,跟内存泄漏say byebye
- windows下重置mysql密码
- java字符串求交集算法
- git clone https://gerrit.fd.io/r/vpp ./ 失败
- Java-Integer-int面试题
- 学习android(一)
- Android 内存泄漏总结
- POJ矩阵转置
- ARM 与 SMI 将在 GDC 用 Gear VR 展示注视点渲染技术
- 网页登陆界面(纯JSP)
- 在Android模拟器中安装busybox
- HAL硬件抽象层(理解)
- java中String、StringBuffer、StringBuilder的区别
- 什么是SEO优化