android 多点触摸的一些基本原理

作者: Touchscreen     时间:2013-10-10     源于:看看新闻网    总点击:
【导读】: 在android的中,MotionEvent event代表的是一个触摸事件,们还可以根据event.getAction() & MotionEvent.ACTION_MASK的结果来判断是何种事件,是ACTION_DOWN、ACTION_UP还是ACTION_MOVE。下面介绍下我们将使用到的五个操作:

    北京时间10月10日消息,中国触摸屏网讯, 最近想在项目中实现多指操作,可惜android原生的sdk对多指的支持不太好,只能自己写了。下面是我在网上查到的一些关于多指触摸的一些资料。

    本文来自:http://www.51touch.com/touchscreen/news/dynamic/201310/10-25651.html

    在android的中,MotionEvent event代表的是一个触摸事件。我们对屏幕的几乎所有操作都会触发该事件,如点击、放开、滑动等。不同的事件在MotionEvent中有不同的id,根据id的不同可以判断触摸事件属于哪个手指。我们还可以根据event.getAction() & MotionEvent.ACTION_MASK的结果来判断是何种事件,是ACTION_DOWN、ACTION_UP还是ACTION_MOVE。下面介绍下我们将使用到的五个操作:

    MotionEvent.ACTION_DOWN:在第一个点被按下时触发
    MotionEvent.ACTION_UP:当屏幕上唯一的点被放开时触发
    MotionEvent.ACTION_POINTER_DOWN:当屏幕上已经有一个点被按住,此时再按下其他点时触发。
    MotionEvent.ACTION_POINTER_UP:当屏幕上有多个点被按住,松开其中一个点时触发(即非最后一个点被放开时)。
    MotionEvent.ACTION_MOVE:当有点在屏幕上移动时触发。值得注意的是,由于它的灵敏度很高,而我们的手指又不可能完全静止(即使我们感觉不到移动,但其实我们的手指也在不停地抖动),所以实际的情况是,基本上只要有点在屏幕上,此事件就会一直不停地被触发。

    举例来讲:当我们放一个食指到屏幕上时,触发ACTION_DOWN事件;再放一个拇指到屏幕上,触发ACTION_POINTER_DOWN事件;此时再把食指或拇指放开,都会触发ACTION_POINTER_UP事件;再放开最后一个手指,触发ACTION_UP事件;而同时在整个过程中,ACTION_MOVE事件会一直不停地被触发。

    根据上面这些原理,就可以判断在触摸过程中有多少个手指在屏幕上:

switch (event.getAction() & MotionEvent.ACTION_MASK) {
 case MotionEvent.ACTION_DOWN:
  mode = 1;
  break;
 case MotionEvent.ACTION_UP:
  mode = 0;
  break;
 case MotionEvent.ACTION_POINTER_UP:
  mode -= 1;
  break;
 case MotionEvent.ACTION_POINTER_DOWN:
  mode += 1;
  break;
}假如现在有两个手指在触摸屏上,可通过如下方法分别获得这两个触摸点的位置:

float x1 = event.getX(0);
float y1 = event.getY(0);

float x2 = event.getX(1);
float y2 = event.getY(2);上面大体就是多指触摸的基本原理了。要在这个基础之上实现多指触摸,还有很长的路要走。


    触摸屏与OLED网推出微信公共平台,每日一条微信新闻,涵盖触摸屏材料、触摸屏设备、触控面板行业主要资讯,第一时间了解触摸屏行业发展动态。关注办法:微信公众号“i51touch” 或微信中扫描下面二维码关注,或这里查看详细步骤
相关阅读:3D打印    模具产业    微铸锻技术    石墨烯    OLED面板    夏普    iPhone 8    半导体    苹果    
关于我们 | 广告服务 | 联系我们 | 版权声明 | 隐私政策 | 网站地图 | 友情链接 | 欢迎投稿 | 加入收藏 | 意见反馈 | 经销商加入
网站广告、经销商加盟、触摸屏软件销售: 028-85108892 13183843395 028-66219290 联系人: 张小姐 产品购买联系方式如下:
地址:成都市高升桥东路2号高盛中心1109室 电话: 028-85108892 13183843395 028-66219290
版权所有 Copyright(C) 2003-2015 All rights reserved 中国触摸屏网 电子邮件: 51touch@126.com touch8@gmail.com
业务合作QQ:触摸屏技术,触摸屏报价,触摸屏软件咨询 43361182 触摸屏软件制作与技术支持:触摸屏软件,触摸查询系统,触摸查询软件 893008608 媒体合作QQ: 893008608

2000人超级QQ触摸屏群:59897879 171220106


分享到