Android-单点触摸-多点触摸

本文详细介绍了Android中事件处理的两种方式:回调事件处理和监听器事件处理,并重点讲解了触摸事件的处理机制。讨论了触摸事件的传播性和返回值的影响,列举了常用监听器类型。在触摸事件中,区分了单点触摸和多点触摸的ACTION码,以及如何获取手指数量、指针索引和坐标。
<一>Android事件处理:

1、Android提供了两种方式的事件处理:

(1)

回调事件处理:通过重写组件特定的方法实现回调事件处理,事件的发生者和事件的处理者是同

一个对象

监听器的事件处理:通过编写监听类绑定组件实现监听事件处理,事件的发生者和事件的处理者

不是同一个对象

(2)从小范围扩展到到大范围(myButton---->Activity),由监听事件返回的true或false决定

是否传播,如果为true就不传播,为false就传播

(3)好处:开发出界面友好人机交互良好的Android应用

(4)常用的监听器

监听点击事件:View.OnclickListener

监听长按事件:View.OnLongClikListener

监听触摸事件:View.OnTouchListener

监听焦点改变:View.OnFocusChangeListener

与长按监听一起使用,生成菜单:View.OnCreateContextMenuListener

<二>触摸事件解析:
触摸处理方法的返回值是控制触摸事件的传播性的。
<1>当返回值为false时,代表本方法对这次触摸事件不感兴趣,这次触摸的时间序列的后续动作

处理就会转交给上一级,本方法不再理会。
<2>当返回值为true时,代表本方法对这次触摸事件感兴趣,这次触摸事件序列的后续动作就会直

接由该方法处理,不会再传播给上一级
<3>当按钮的触摸监听事件和按钮的触摸回调事件同时存在,取决权决与:按钮的触摸监听事件
触摸操作是由一系列的动作组成,一次触摸至少包含一次手指的按下、移动、抬起3个事件

onTouch()方法:

单点触摸时:
action=0 代表手指按下
action=1 代表手指抬起
action=2 代表手指移动


多点触摸时:
aciton=0   代表手指1按下
action=261 代表手指2按下
action=517 代表手指3按下
action=518 代表手指3抬起
action=262 代表手指2抬起
action=1   代表手指1抬起

注意:在多点触摸时,获得的action的值是一个复合码,这个复合码是一个八位的十六进制数
      第二个手指按下,action=261,对应的十六进制数为0X00000105,其中第2个字节01代表手指

的指针索引,第一个字节05是它的动作编码,按下事件,06代表抬起

无论是单点触摸,还是多点触摸,手指移动的action都是=2

获得屏幕上的手指的数量:event.getPointerCount()

指针索引:每一个手指按照顺序编号,随着屏幕上的手指数量的不同,每一个手指的指针索引会
发生改变

指针id:event.getPointerId(指针索引),相当于每一个手指的名字,一旦确定不再变化
获得每一个手指的坐标:
float x=event.getX(指针索引);
float y=event.getY(指针索引);
注意:默认(不带参数的)获取到的x和y是索取第一个手指的坐标

解析手指的action,拿到每一个pointIndex和action_code

int pointIndex=action>>8;
int action_code=action&0x00000ff;








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值