Android Touch系统学习整理
2013-02-17 23:10
176 查看
基于大牛maxleng的文章学习整理:http://blog.csdn.net/maxleng, 其中带有数字的是自己已经写的文章
由末端向上整理
onTouch执行 action等
onTouch与Click的关系 (属于系统手势判断)
onTouch与手势判断(属于自定义手势判断)
如何传递?Event从哪来的?
onTouch与onInterceput的关系
三者关系
---------------------------
Android Touch相关的一些简单规则
一 、MotionEvent对象简单学习
1 位置信息:Android Touch事件rawX,rawY与x,y的区别
2. Touch action :Android Touch 单点触摸Action
3. 修改MotionEvent的值
二、基于源码析Touch Event传递机制
Android 处理Touch Event是先有系统获取到事件,之后传递给当前显示的Activity,之后再逐级向下派发直到传递给Touch正下方的View为止,当然此View也可以选择不处理Touch Event
1. Touch Event接收并传递给Activity -- Activity是在何处接收到Touch Event以及如何向下派发
2. VewGroup.dispatchTouchEvent源码简单分析 -- Activity把Touch Event向下派发,此处分析ViewGroup向下派发流程
3. 分析Touch 与Click的关系 -- 派发的具体的View,View会进行一些常用操作处理,例如点击事件。
疑问:
1. 手机如何接收到Touch Event?
2. Service端如何处理?
3. 为什么事件要每次派发一个ACTION操作?
4. 为什么要以树形结构又上向下派发?
5. Touch Event 使用生产者消费者模式,简单实现一个?
6. Touch Event传递简单实现一个?
7. onTouchEvent, onInterceptTouchEvent, dispatchTouchEvent 每个方法具体含义?如何处理派发流程?
以上疑问参考资料:
Android FrameWork——Touch事件派发过程详解
三、手势识别
使用Android GestureDetector进行手势识别
疑问:
1. 触摸屏幕材质有何区别?
2. 硬件如何传递信息给驱动?
3. 驱动如何传递信息给Linux?
4. Android 如何从Linux获取此信息?
5. Android内部如何处理的?
以上疑问参考资料:
Android GWES之输入系统
Android输入系统之输入路径详解
资料整理:
Android Touch事件源码分析文章收集
收集一些Android Touch相关资料
------------------------规则
1. Touch事件是UI树形机构,由上向下传递。如果点击手机界面中的一个Button,其先传递给最外层的视图,经过层层向下传递给Button的父视图,其父视图再传递给Button处理。
2. 具体处理方法是View.onTouchEvent(MotionEvent event)
3. MotionEvent 中包含多种触屏操作,每种操作都用一个唯一的ID来标识,并且这些ID声明成为常量,最常见的就是ACTION_DOWN, ACTION_MOVE, ACTION_UP, ACTION_CANCEL四种动作。如果点击屏幕后慢慢移动,会执行的操作是,仅执行一次ACTION_DOWN, 移动过程中执行多次ACTION_MOVE, 抬起手指执行ACTION_UP。
4. 在1中提到Touch事件是从上向下传递的,在3中又提到触屏又有多种操作,这些操作是如何传递给需要具体操作的View的? 答案是每次操作都是从UI树形结构的上向下传递,例如ACTION_DOWN, ACTION_MOVE, ACTION_MOVE, ACTION_MOVE, ACTION_UP,一次触屏动作包含5个具体的操作,相当于UI树由上向下传递5次,第一个操作ACTION_DOWN操作并处理完成之后,再传递第二个操作ACTION_MOVE依此类推,直到执行完5此传递为止。
5. 具体是如何传递的? 涉及两方面,其一是UI树形结构决定了Touch传递的上下结构,其二是三个方法,包括负责分发Touch事件的View.dispatchTouchEvent, 处理拦截Touch事件ViewGroup.onInterceptTouchEvent, 视图针对触屏事件具体处理View.onTouchEvent,这三个方法决定了传递的具体流程。
6. 事件消耗,事件处理 - 指ACTION_DOWN, ACTION_MOVE, ACTION_UP, ACTION_CANCEL任一操作,只可能有两种情况。一 某一视图处理,可以叫做这个视图消耗了此次事件或者这个事件由此视图处理了,其他视图不再处理。 二 没有任何视图处理此事件。
7. Event.getX() 与 Event.getY() 向上移动,向下移动偏移值,正或负
由末端向上整理
onTouch执行 action等
onTouch与Click的关系 (属于系统手势判断)
onTouch与手势判断(属于自定义手势判断)
如何传递?Event从哪来的?
onTouch与onInterceput的关系
三者关系
---------------------------
Android Touch相关的一些简单规则
一 、MotionEvent对象简单学习
1 位置信息:Android Touch事件rawX,rawY与x,y的区别
2. Touch action :Android Touch 单点触摸Action
3. 修改MotionEvent的值
二、基于源码析Touch Event传递机制
Android 处理Touch Event是先有系统获取到事件,之后传递给当前显示的Activity,之后再逐级向下派发直到传递给Touch正下方的View为止,当然此View也可以选择不处理Touch Event
1. Touch Event接收并传递给Activity -- Activity是在何处接收到Touch Event以及如何向下派发
2. VewGroup.dispatchTouchEvent源码简单分析 -- Activity把Touch Event向下派发,此处分析ViewGroup向下派发流程
3. 分析Touch 与Click的关系 -- 派发的具体的View,View会进行一些常用操作处理,例如点击事件。
疑问:
1. 手机如何接收到Touch Event?
2. Service端如何处理?
3. 为什么事件要每次派发一个ACTION操作?
4. 为什么要以树形结构又上向下派发?
5. Touch Event 使用生产者消费者模式,简单实现一个?
6. Touch Event传递简单实现一个?
7. onTouchEvent, onInterceptTouchEvent, dispatchTouchEvent 每个方法具体含义?如何处理派发流程?
以上疑问参考资料:
Android FrameWork——Touch事件派发过程详解
三、手势识别
使用Android GestureDetector进行手势识别
疑问:
1. 触摸屏幕材质有何区别?
2. 硬件如何传递信息给驱动?
3. 驱动如何传递信息给Linux?
4. Android 如何从Linux获取此信息?
5. Android内部如何处理的?
以上疑问参考资料:
Android GWES之输入系统
Android输入系统之输入路径详解
资料整理:
Android Touch事件源码分析文章收集
收集一些Android Touch相关资料
------------------------规则
1. Touch事件是UI树形机构,由上向下传递。如果点击手机界面中的一个Button,其先传递给最外层的视图,经过层层向下传递给Button的父视图,其父视图再传递给Button处理。
2. 具体处理方法是View.onTouchEvent(MotionEvent event)
3. MotionEvent 中包含多种触屏操作,每种操作都用一个唯一的ID来标识,并且这些ID声明成为常量,最常见的就是ACTION_DOWN, ACTION_MOVE, ACTION_UP, ACTION_CANCEL四种动作。如果点击屏幕后慢慢移动,会执行的操作是,仅执行一次ACTION_DOWN, 移动过程中执行多次ACTION_MOVE, 抬起手指执行ACTION_UP。
4. 在1中提到Touch事件是从上向下传递的,在3中又提到触屏又有多种操作,这些操作是如何传递给需要具体操作的View的? 答案是每次操作都是从UI树形结构的上向下传递,例如ACTION_DOWN, ACTION_MOVE, ACTION_MOVE, ACTION_MOVE, ACTION_UP,一次触屏动作包含5个具体的操作,相当于UI树由上向下传递5次,第一个操作ACTION_DOWN操作并处理完成之后,再传递第二个操作ACTION_MOVE依此类推,直到执行完5此传递为止。
5. 具体是如何传递的? 涉及两方面,其一是UI树形结构决定了Touch传递的上下结构,其二是三个方法,包括负责分发Touch事件的View.dispatchTouchEvent, 处理拦截Touch事件ViewGroup.onInterceptTouchEvent, 视图针对触屏事件具体处理View.onTouchEvent,这三个方法决定了传递的具体流程。
6. 事件消耗,事件处理 - 指ACTION_DOWN, ACTION_MOVE, ACTION_UP, ACTION_CANCEL任一操作,只可能有两种情况。一 某一视图处理,可以叫做这个视图消耗了此次事件或者这个事件由此视图处理了,其他视图不再处理。 二 没有任何视图处理此事件。
7. Event.getX() 与 Event.getY() 向上移动,向下移动偏移值,正或负
相关文章推荐
- android系统学习笔记二
- Android系统框架学习 好
- 【学习笔记】一些细碎android知识整理
- Android源码学习之八—系统启动过程
- (学习笔记)android 5.0 系统去电流程状态判断(上)
- 第17天 Android Touch事件学习 4 获取手指触摸位置
- Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划 (二)
- Android进阶学习内容整理
- android getSystemService(系统服务)学习
- 第20天 Android Touch事件学习 7 交给哪个视图处理事件?
- Android系统架构图学习
- android 学习资料整理
- Android系统源码学习步骤
- 学习 1-在Ubuntu上为Android系统编写Linux内核驱动程序
- Android系统源码学习步骤
- AndroidBinder进程间通信系统-android学习之旅(86)
- 极客学院_android的touch事件学习笔记
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-7.App Widgets)
- 小白安卓学习第一章(Android系统概述)
- android 开发零起步学习笔记(二十):Android开发笔记:如何使用预先制作好的SQLite数据库(整理自网络)