重拾Android 之 界面事件
来源:互联网 发布:学电脑编程能干什么 编辑:程序博客网 时间:2024/05/22 16:20
界面事件
在MVC模型中,控制器根据UIEvent类不同,将事件传递给界面控件不同的事件处理函数。
按键事件(KeyEevet)将传递给onKey()函数进行处理
触摸事件(ToutchEvent)将传递给onToutch()函数进行处理。
Android系统界面事件传递和处理遵循的规则
如果界面控件设置了事件监听器,则事件将先传递给给事件监听器
如果界面控件没有设置事件监听器,界面事件则会直接传递给界面控件的其他事件处理函数
即使界面设置了事件监听器,界面事件也可以再次传递给其他事件处理函数
界面框架监听事件的处理函数
设置按键事件的监听器setOnKeyListener()
重载onKey()函数
onKey()函数返回false。事件将继续传毒,返回为true将阻止事件的继续传递
触摸事件
设置触摸事件的监听器setOnTouchListener()
重载onTouch()函数
当手指接触到触摸屏、在触摸屏上移动或离开触摸屏时分别会引发ACTION_DOWN、ACTION_UP、ACTION_MOVE触摸事件,而无论是哪种触摸事件都会调用onTouch()函数进行处理
事件类型包含在onTouch()函数的MotionEvent参数中,可以通过getAction()函数获取触摸事件的类型,然后根据触摸事件的不同类型进行不同的处理
MotionEvent参数中不仅有触摸事件的类型信息,还有触点坐标的信息,获取方法是使用getX()和getY()函数,这两个函数获取到的触点是相对于父界面元素的坐标信息,如果要获取绝对坐标信息,可以使用getRawX(),getRawY()。
触点压力是一个介于0和1之间的浮点数,用来表示用户对触摸屏施加压力的大小,接近0表示压力较小,接近1表示压力较大,获取触摸事件的触点压力的方式是调用getPressure()函数
触点尺寸指用户接触触摸屏的接触点大小,也是一个介于0,1之间的浮点数,接近0表示尺寸较小,接近1比较尺寸较大,可以用getSize()函数获取。
一般情况下,如果用户将手指放在触摸屏上,但不移动,然后抬起手指,应先后产生ACTION_DOWN和ACTION_UP两个触摸事件但如果在屏幕上移动手指,然后再抬起手指,则会产生这样的时间序列ACTION_DOWN→ACTION_MOVE→ ACTION_MOVE → ACTION_MOVE → ACTION_UP
手机上运行的应用程序,效率非常重要,如果Android界面不能产生足够多的触摸事件,则应用程序就不能够很精确的描绘触摸屏上的触摸轨迹。
但是如果Android界面产生过多的触摸事件,虽然能够满足精度的需要,但却降低了应用程序的效率
Android界面框架使用可打包的解决方法,在触点移动速度较快时会产生大量的数据,每经过一段时间间隔就会产生一个ACTION_MOVE事件,这个事件除了有当前触点的相关信息外,还包含这段事件间隔内触点轨迹的历史数据信息,这样既能保持精度,又不至于产生过多的触摸事件。
通常情况下,在ACTION_MOVE的事件处理函数中,都是先处理历史数据,然后处理当前数据。
在MVC模型中,控制器根据UIEvent类不同,将事件传递给界面控件不同的事件处理函数。
按键事件(KeyEevet)将传递给onKey()函数进行处理
触摸事件(ToutchEvent)将传递给onToutch()函数进行处理。
Android系统界面事件传递和处理遵循的规则
如果界面控件设置了事件监听器,则事件将先传递给给事件监听器
如果界面控件没有设置事件监听器,界面事件则会直接传递给界面控件的其他事件处理函数
即使界面设置了事件监听器,界面事件也可以再次传递给其他事件处理函数
界面框架监听事件的处理函数
设置按键事件的监听器setOnKeyListener()
重载onKey()函数
onKey()函数返回false。事件将继续传毒,返回为true将阻止事件的继续传递
触摸事件
设置触摸事件的监听器setOnTouchListener()
重载onTouch()函数
当手指接触到触摸屏、在触摸屏上移动或离开触摸屏时分别会引发ACTION_DOWN、ACTION_UP、ACTION_MOVE触摸事件,而无论是哪种触摸事件都会调用onTouch()函数进行处理
事件类型包含在onTouch()函数的MotionEvent参数中,可以通过getAction()函数获取触摸事件的类型,然后根据触摸事件的不同类型进行不同的处理
MotionEvent参数中不仅有触摸事件的类型信息,还有触点坐标的信息,获取方法是使用getX()和getY()函数,这两个函数获取到的触点是相对于父界面元素的坐标信息,如果要获取绝对坐标信息,可以使用getRawX(),getRawY()。
触点压力是一个介于0和1之间的浮点数,用来表示用户对触摸屏施加压力的大小,接近0表示压力较小,接近1表示压力较大,获取触摸事件的触点压力的方式是调用getPressure()函数
触点尺寸指用户接触触摸屏的接触点大小,也是一个介于0,1之间的浮点数,接近0表示尺寸较小,接近1比较尺寸较大,可以用getSize()函数获取。
一般情况下,如果用户将手指放在触摸屏上,但不移动,然后抬起手指,应先后产生ACTION_DOWN和ACTION_UP两个触摸事件但如果在屏幕上移动手指,然后再抬起手指,则会产生这样的时间序列ACTION_DOWN→ACTION_MOVE→ ACTION_MOVE → ACTION_MOVE → ACTION_UP
手机上运行的应用程序,效率非常重要,如果Android界面不能产生足够多的触摸事件,则应用程序就不能够很精确的描绘触摸屏上的触摸轨迹。
但是如果Android界面产生过多的触摸事件,虽然能够满足精度的需要,但却降低了应用程序的效率
Android界面框架使用可打包的解决方法,在触点移动速度较快时会产生大量的数据,每经过一段时间间隔就会产生一个ACTION_MOVE事件,这个事件除了有当前触点的相关信息外,还包含这段事件间隔内触点轨迹的历史数据信息,这样既能保持精度,又不至于产生过多的触摸事件。
通常情况下,在ACTION_MOVE的事件处理函数中,都是先处理历史数据,然后处理当前数据。
0 0
- 重拾Android 之 界面事件
- 重拾Android之菜单事件
- 重拾Android 之界面控件和布局方式
- Android项目重构之路:界面篇
- Android项目重构之路(二):界面篇
- Android项目重构之路:界面篇
- Android项目重构之路:界面篇
- Android项目重构之路:界面篇
- Android 项目重构之路:界面篇
- Android项目重构之路:界面篇
- Android项目重构之路:界面篇
- android项目重构之路:界面篇
- Android项目重构之路:界面篇
- Android项目重构之路:界面篇
- Android项目重构之路:界面篇
- Android项目重构之路:界面篇
- Android项目重构之路:界面篇
- Android项目重构之路:界面篇
- tinyxml2源码分析(一)
- 单链表反转(递归和非递归)
- Makefile实例
- 求(1~n)中有多少个数字包含49数字
- 生活的调味剂之生活百味
- 重拾Android 之 界面事件
- 微信Android终端SDK新手使用指南 libammsdk.jar
- 策略路由基础命令(Linux)分享
- HoloGraphLibrary 源码解析
- Linux 学习day01-day02
- linux 剪文件
- Maven 聚合与继承
- Objective-C中使用@try处理异常
- Unique Subsets