android怎么监听多点触摸_android 多点触控
在android中多指触控通过OnTouchListener监听器监听,触控事件在onTouch方法中分析处理。
在单指触控中,我们常用的三个方法ACTION_DOWN、ACTION_UP、ACTION_MOVE,在多指触控中也会用到,不过用法稍有不同。
多指触控中多了ACTION_POINTER_DOWN、ACTION_POINTER_UP两种情况,这几个情况的触发用法在下面源码中标注:
switch (event.getAction() &MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_DOWN: //第一根手指按下时触发
mode = 1;break;case MotionEvent.ACTION_POINTER_DOWN: //第二根或以上的手指按下时触发
mode += 1;break;case MotionEvent.ACTION_UP: //所有手指都离开时触发
mode = 0;break;case MotionEvent.ACTION_POINTER_UP: //当有两根及以上手指触碰屏幕,其一离开时触发
mode -= 1;break;case MotionEvent.ACTION_MOVE: //此事件非常灵敏,只要有手指触碰屏幕,便会一直触发
if (mode >= 2) {
}break;
}
触碰的手指数可用event.getPointerCount()方法获取。
放大缩小:
此功能可通过手指之间的前后距离倍数来确定放大缩小的倍数,不这样稍微麻烦了点,我们可以用ScaleGestureDetector来实现:
scaleGestureDetector = new ScaleGestureDetector(this, newScaleGestureDetector.OnScaleGestureListener() {
@Overridepublic booleanonScale(ScaleGestureDetector detector) {float factor =detector.getScaleFactor();float x =detector.getFocusX();float y =detector.getFocusY();
Show.log("onScale:" + factor + ";" + x + ";" +y);
matrix.postScale(factor, factor, x, y);
iv.setImageMatrix(matrix);return true;
}
@Overridepublic booleanonScaleBegin(ScaleGestureDetector detector) {
Show.log("onScaleBegin");return true;
}
@Overridepublic voidonScaleEnd(ScaleGestureDetector detector) {
Show.log("onScaleEnd");
}
});
iv=(ImageView) findViewById(R.id.img_test);
iv.setOnTouchListener(newOnTouchListener() {
@Overridepublic booleanonTouch(View v, MotionEvent event) {\
scaleGestureDetector.onTouchEvent(event);return true;
}
});
多指滑动:
先获取各点的中点,而后根据中点的位移来进行判断,下面是一个简单样例:
public class MainActivity extendsActivity {privateImageView iv;
Matrix matrix= newMatrix();privatePointF startPoint;privatePointF nowPoint;
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startPoint= newPointF();
nowPoint= newPointF();
iv=(ImageView) findViewById(R.id.img_test);
iv.setOnTouchListener(newOnTouchListener() {
@Overridepublic booleanonTouch(View v, MotionEvent event) {switch (event.getAction() &MotionEvent.ACTION_MASK) {caseMotionEvent.ACTION_DOWN:caseMotionEvent.ACTION_POINTER_DOWN:
setEventPoint(event,startPoint);break;caseMotionEvent.ACTION_MOVE:
setEventPoint(event,nowPoint);
Show.log("move:"+getDistance(startPoint,nowPoint));
matrix.postTranslate(nowPoint.x-startPoint.x,nowPoint.y-startPoint.y);
startPoint.set(nowPoint.x,nowPoint.y);break;caseMotionEvent.ACTION_UP:
setEventPoint(event,nowPoint);
Show.log("end:"+getDistance(startPoint,nowPoint));break;
}
iv.setImageMatrix(matrix);return true;
}
});
}private voidsetEventPoint(MotionEvent event, PointF startPoint) {float x = 0, y = 0;final int pointerCount =event.getPointerCount();for (int i = 0; i < pointerCount; i++) {
x+=event.getX(i);
y+=event.getY(i);
}
x= x /pointerCount;
y= y /pointerCount;
startPoint.set(x,y);
}private floatgetDistance(PointF point1,PointF point2){float x = point1.x-point2.x;float y = point1.y-point2.y;return (float) Math.sqrt(x * x + y *y);
}
}
android怎么监听多点触摸_android 多点触控相关推荐
- android怎么监听多点触摸_Android多点触摸交互处理
触摸操作是安卓最基本的交互方法,掌握多点触摸的开发可增强应用交互体验.首先需要了解触摸事件的侦听和传递,同时,本文介绍了单点.多点触摸的使用方法,并在此基础上,使用多点触控完成了一个缩放照片的简单例子 ...
- Android游戏开发之单点触摸与多点触摸
Android游戏开发之单点触摸与多点触摸的响应方式 游戏开发中的触摸事件 在游戏开发中监听屏幕触摸事件须要在View中重写父类onTouchEvent方法,在重写的方法中拦截用户触摸屏幕的一些信息, ...
- android触摸滑动监听,Android 滑动监听的实例详解
Android 滑动监听的实例详解 摘要: ScollBy,ScollTo是对内容的移动,view.ScollyBy是对view的内容的移动 view,ScollTo是对内容的移动(移动到指定位置), ...
- java edittext 输入监听_Android应用开发之Android EditText 监听用户输入完成的实例
本文将带你了解Android应用开发Android EditText 监听用户输入完成的实例,希望本文对大家学Android有所帮助. 我们都知道, Android EditText输入框,并没有 ...
- android 监听安装来源_Android编程监听APK安装与删除等过程的方法
本文实例讲述了Android编程监听APK安装与删除等过程的方法.分享给大家供大家参考,具体如下: 软件下载后的一系列动作监听:先前是通过Service监听扫描获取状态,以后用这个方法测试使用 imp ...
- android listview ontouchlistener,Android ListView监听滑动事件的方法(详解)
ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监 ...
- Android怎样监听蓝牙耳机的按键事件
Android怎样监听蓝牙耳机的按键事件 写在前面: 直接想要代码非常easy,你直接把滚动栏拉到最底端就能够看到.假设想要十分地了解为什么,那就依照我规划的一步一步来理解.下面測试环境以手头上有的「 ...
- Android如何监听蓝牙耳机的按键事件(转)
源: Android如何监听蓝牙耳机的按键事件 写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「 ...
- Android监听左右滑删除通知,Android 滑动监听RecyclerView线性流+左右划删除+上下移动...
废话不多说了,直接给大家贴代码了.具体代码如下所示: xmlns:tools="http://schemas.android.com/tools" android:layout_w ...
- Android 监听 Android中监听系统网络连接打开或者关闭的实现代码
本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.c ...
最新文章
- Windows Mobile 6.0 SDK和中文模拟器下载
- java script中==和===_Java Script与CSS的问题
- Keras学习笔记:函数式模型
- Spring Data ElasticSearch示例--查询索引库
- 服务器未进系统如何关机,云服务器关机了怎么开机
- redis类型 tp5_tp5配置使用redis笔记!
- 开源项目工时系统_自研工时管理系统,究竟好不好? | AceTeamwork
- 数字化时代,Hightopo助力搭建光伏产业数据可视化
- 如何更改项目的发布名称
- webview适配(一):文件选择,相机拍照,相册选择
- 关于动态电路响应那些事
- 腾讯元老赚够钱后辞职,到安徽隐居,每天对着200亩地发呆
- dreamware html中加入flv,Dreamweaver插入FLV文件技巧
- 目前流行的装修风格_目前流行的装修风格
- python实现之一阶二阶导数
- Firebug使用技巧
- Ghost全盘镜像备份/还原(上)
- 如何修复过曝的图片?过曝图片怎么修?不如试试这样做
- Android进程保活--我也想乖,傻C产品就要这样
- bluebird与原生Promise对象及bluebird模块的中文API文档
热门文章
- discuz template 模板文件说明
- html link 怎么设置密码,tplink路由器手机怎么设置密码?
- L2-1 特立独行的幸福 (25分)
- hdu2201:熊猫阿波的故事
- KingbaseES R6 集群手工配置VIP案例
- python 抓取 实时公交_Python实现命令行监控北京实时公交之一
- Python自动化测试如何自动生成测试用例?
- 麻将 java_java麻将游戏算法
- windows10桌面_windows10 美化桌面加强能力
- 2021湖北技能高考成绩时间查询,2020湖北技能高考成绩查询时间