Android之双指操作
2015-12-23 09:58
218 查看
最近项目中要实现对地图的双指操作,从网上查了一些代码,整理在此
双指旋转
1、首先要判断出屏幕上手指的个数
手指个数等于2的时候,才能进行双指旋转之后的代码操作
2、在第二个手指按下的时候,获得两指之间的初始角度
计算角度的方法getRotation:
这里特别分析一下该计算方法,我也不知道这个方法是否是最简便,最精却的计算双指之间角度的最佳方法,至少目前搜索到的代码中,看起来还可以,嘿嘿嘿
Math.atan2()接受两个参数x和y,方法如下:
angel=Math.atan2(y,x),请注意,该方法的参数顺序是倒置的,该方法就是计算两点之间的弧度,弧度并不是角度,之后还得用Math.toDegrees()这个方法转换成角度
3、接下来再双指旋转的时候,会触发ACTION_MOVE,计算当前双指的旋转角度,与初始角度相减,即可得到旋转的角度
当然,由于屏幕手指触发的敏感度等原因,我们要写出效果好的代码,还得加上一些规范代码,例如双指之间大于一定距离时才触发双指旋转的操作等
双指旋转
1、首先要判断出屏幕上手指的个数
int pointerCount = event.getPointerCount();
手指个数等于2的时候,才能进行双指旋转之后的代码操作
2、在第二个手指按下的时候,获得两指之间的初始角度
case MotionEvent.ACTION_POINTER_DOWN: startRotation = getRotation(event);
计算角度的方法getRotation:
private float getRotation(MotionEvent event) { double delta_x = (event.getX(0) - event.getX(1)); double delta_y = (event.getY(0) - event.getY(1)); double radians = Math.atan2(delta_y, delta_x); return (float) Math.toDegrees(radians); }
这里特别分析一下该计算方法,我也不知道这个方法是否是最简便,最精却的计算双指之间角度的最佳方法,至少目前搜索到的代码中,看起来还可以,嘿嘿嘿
Math.atan2()接受两个参数x和y,方法如下:
angel=Math.atan2(y,x),请注意,该方法的参数顺序是倒置的,该方法就是计算两点之间的弧度,弧度并不是角度,之后还得用Math.toDegrees()这个方法转换成角度
3、接下来再双指旋转的时候,会触发ACTION_MOVE,计算当前双指的旋转角度,与初始角度相减,即可得到旋转的角度
case MotionEvent.ACTION_MOVE: float endRotate = getRotation(event); float rotate = endRotate - startRotation;
当然,由于屏幕手指触发的敏感度等原因,我们要写出效果好的代码,还得加上一些规范代码,例如双指之间大于一定距离时才触发双指旋转的操作等
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories