Android多点触控技术和应用框架 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【meiwen.anslib.com - 电脑资料】

    Android多点触控技术跟Linux输入子系统紧密相关,

Android多点触控技术和应用框架

。本文将从应用的角度说明Android多点触控技术的接口和应用。

    一、多点触控场景分析

    网络上有关Android多点触控技术的文章多见于两点拉伸进行图片放大缩小。对于,这个场景有两个特点:

    1)两点,而不是更多点;

    2)对于触点的移动事件(MotionEvent.ACTION_MOVE),只需要计算两点的距离,进而判断两个点之间的距离是变大还是缩小,实现图片放大或者缩小。

    这个过程并不需要记录这两个点和之前的两个点的关系。这样讲比较抽象,我们可以用一个例子来解释。如下图:

   

    假设一个人拿着5支笔同时写linux这个单词的一个字母,那就得知道当前的5个触点里面的每个触点和之前的触点的对应关系,才能做到一支笔画一个字母。

    这个场景基本上能够覆盖到android多点触控的所有接口的应用了。我们先来介绍接口,最后给出多点触控的应用框架,它理论上可以处理很多点的触控,而不仅仅是2点或者5点。

    二、Android多点触控接口

    1.onTouchEvent

    重载Activity的onTouchEvent接口以处理触控信息。

    public booleanonTouchEvent(MotionEvent event)

    2.event.getAction

    该接口与MotionEvent.ACTION_MASK想与可以得到触控按键的类型,如按下、弹起和移动。

    1)MotionEvent.ACTION_DOWN 第一个触控点按下,

电脑资料

Android多点触控技术和应用框架》(http://meiwen.anslib.com)。

    2)MotionEvent.ACTION_POINTER_DOWN 屏幕上已经有1个或者多个触点的情况下再按下一个点。

    3)MotionEvent.ACTION_UP 最后一个触点弹起

    4)MotionEvent.ACTION_POINTER_UP 非最后一个触点弹起。

    5)MotionEvent.ACTION_MOVE 触点移动事件

    3.event.getActionIndex()

    获得触控点的索引,其代表触控点在所有触控点中的序号。例如A、B、C三个点依次按下,那么分别对应的index是0、1、2。假设B点弹起,此时A、C的index将是0、1。这时假如新按一个点D,那A、C、D的index将是0、1、2。

    从中我们发现,C点的index会因为其他点的弹起而变化。所以不能用该值来跟踪同一个点。

    4.event.getPointerId(actionIndex)

    通过触控点索引来获得触控点的唯一标识。其自触点被按下开始,直到弹起,该值都不会发生变化,其是触点的一个身份ID。例如A、B、C三个点依次按下,那么分别对应的ID是0、1、2。假设B点弹起,此时A、C的ID依然是0、2。这时假如新按一个点D,那A、C、D的ID将是0、2、1。新增的触点的ID会从0开始递增,发现未用值即拿来用。

    5.获得触点坐标

    event.getX(actionIndex)、event.getY(actionIndex)获得触点距离所属的View的坐标。event.getRawX(actionIndex)、event.getRawY(actionIndex)获得触点距离屏幕左上角的坐标。

    三、多点触控应用框架

   

最新文章