重拾Android 之 界面事件

界面事件


在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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是给出了创建各种类型对话框的方法 并为给出创建对话框之后 并为给出如何用户获取在对话框中做出选择后的数据 即如何监听用户做出的选择 接下来笔者将根据JavaDoc API文档引导读者详细的了解提示对话框 文本框对话框 简单列表对话框 单选项列表对话框 多选项列表对话框 自定义对话框6种类型对话框监听事件的具体处理过程 1 创建提示对话框 笔者为该对话框添加了3个按钮 分别是 PositiveButton (确定) NeutralButton NegativeButton(取消) 中文意思是积极的按钮(确定) 中立的按钮 消极的按钮(取消) 按字面意思翻译 有点怪 但是很形象 创建提示对话框并实现监听事件的代码如下: 2 创建文本框对话框 笔者为该对话框添加了1个文本 一个PositiveButton (确定) 一个NegativeButton(取消) 并实现了PositiveButton点击监听事件 点击后后去文本框里的内容 并以toast形式显示出来 创建文本框对话框并实现监听事件的代码如下: 3 创建简单列表对话框 笔者为该对话框添加了一个数组显示列表 并实现了点击列表item选项监听事件 点击item选项后获取item内容 并以toast形式显示出来 查阅JavaDoc API文档 读者可根据JavaDoc API文档来了解如何实现单击item选项监听事件 如下列出的setItems 方法第2个参数易知只要为第2个参数提供OnClickListener实例即可实现监听事件 读者可通过这种方式触类旁通以下几种对话框监听事件的实现 学会通过查阅JavaDoc API文档来解决问题是一项开发必备的编程能力 创建简单列表对话框并实现监听事件的代码如下: 4 创建单选按钮列表对话框 笔者为该对话框添加了一个单选按钮数组显示列表 并实现了点击item选项监听事件 点击item选项后获取item内容 并以toast形式显示出来 5 创建复选框列表对话框 笔者为该对话框添加了一个复选框数组显示列表 并实现了点击复选框选项监听事件 选中复选框选项后 获取所有选中的选项 并以toast形式显示出来 创建复选框列表对话框并实现监听事件的代码如下: 6 创建自定义列表对话框 笔者为该对话框添加了自定义的布局文件 该自定义布局文件包含一个文本标签和一个文本框 并实现了确定按钮点击监听事件 在文本框输入内容后 获取文本框里的内容 并以toast形式显示出来 创建自定义列表对话框并实现监听事件的代码如下: 参见blog:http: blog csdn net andie guo article details 14145135">在Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是给出了创建 [更多]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值