您的位置:首页 > 移动开发 > Android开发

Android之双指操作

2015-12-23 09:58 218 查看
最近项目中要实现对地图的双指操作,从网上查了一些代码,整理在此

双指旋转

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;


当然,由于屏幕手指触发的敏感度等原因,我们要写出效果好的代码,还得加上一些规范代码,例如双指之间大于一定距离时才触发双指旋转的操作等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 双指