Android多点触控之——MotionEvent(触控事件)

本文介绍了Android中MotionEvent事件的分类、如何获取触控事件信息及区别动作类型,重点讲解了如何判断多点触控中哪个手指离开。通过掩码和位操作节约内存,并提供了一个MotionEvent的示例。
摘要由CSDN通过智能技术生成

今天晚上刚学习了一个多点触控的小程序,后面想对其做一个定制。在写的时候遇到很多问题,于是乎就查了一下API文档,又到网上查了一下高手的文章,最后自己又实践了一下。终于把多点触控事件监听的大概原理给弄清楚了。下面就写一下我个人对多点触控原理的理解:

一、MotionEvent事件的分类

      触控分为两类:单点触控多点触控

      1、如何获取触控事件信息?

        安卓中使用32位(int)来存储触控事件的动作信息触控索引。高16位暂时不用,后16位中高8位存储触控信息,低8位存储动作信息。

        在安卓当中,使用ACTION_MASK、ACTION_MASK_SHIFT、ACTION_POINTER_INDEX_MASK、ACTION_POINTER_INDEX_SHIFT这四个属性来获得触控事件信息。

        属性说明:

         ACTION_MASK = 8(0x00ff)  :动作信息掩码,用于截取目标动作信息;

         ACTION_MASK_SHIFT = 8(0x00ff) : 截取动作信息时所需移位个数

         ACTION_POINTER_INDEX_MASK =65280(0xff00) :高8位的位置信息掩码,用于截取索引信息

         ACTION_POINTER_INDEX_SHIFT= 8(0x00ff) :截取触控索引时所需的移位个数

        如果我们想要获取当前触控的全部信息,则使用

                        getAction();返回的是触控的所有信息

        如果我们仅仅需要获取当前触控的动作信息,则使用

                        getActionMasked();返回当前触控的动作信息,即低8位的信息

        如果我们想要获取的是当前触控的索引(比如:当你要监听是哪一个手指离开屏幕)

                        getActionIndex();可以达到效果,返回当前触控动作的索引

      2、如何区别动作类型?

          在一般的单点触控事件当中,我们只需要使用getAction()得到动作类型,再用ACTION_UP、ACTION_DOWN区分就可以达到目的。但是在多点触控的时候,则需要我

         们使用getActionMasked()获得动作信息,然后再区分动作是属于那一类。

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值