Android中多点触控技术和应用框架如何使用?

maiziedu · · 3322 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

在安卓开发中,多触点技术和应用框架是一个比较重要的知识点,是开发者必须掌握的内容。本文小编搜罗了一些多触点和应用框架相关知识,分享给大家,希望大家都能get这些技能。 由于Android多触点技术和linux输入系统关联紧密,本文将从应用的角度出发,围绕多点触控技术的接口和应用进行分享。 一、多点触控场景分析 很多Android教程网站上有关Android多点触控技术的文章多见于两点拉伸进行图片放大缩小。对于,这个场景有两个特点: 1)两点,而不是更多点; 2)对于触点的移动事件(MotionEvent.ACTION_MOVE),只需要计算两点的距离,进而判断两个点之间的距离是变大还是缩小,实现图片放大或者缩小。 这个过程并不需要记录这两个点和之前的两个点的关系。这样讲比较抽象,我们可以用一个例子来解释。如下图: ![1.png](http://studygolang.qiniudn.com/151208/1eae117798de0e74456d5fc961adadac.png) 假设一个人拿着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 第一个触控点按下。 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)获得触点距离屏幕左上角的坐标。 三、多点触控应用框架 ![2.png](http://studygolang.qiniudn.com/151208/850c51de92430564471368ed4039f458.png) 相关文章:《Android 开发中如何动态加载dex?》http://www.maiziedu.com/group/article/9927/

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3322 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传