近日在github上面看到一篇讲Android检测旋转手势的,觉得挺有意思的,现在分享给大家。
主要涉及到一些初中的几何知识和反正切函数的使用,分析如下。
旋转是一种两个手指的多点触屏动作,屏幕上的旋转手势一般可以近似看做以两个手指连线上的某一点为中心画圆。如上图,为了简单,假设为连线的中心点。A0B0是一开始两个手指之间的连线,经过一段时间后,旋转到了A1B1,然后到了A2B2。
可以看到,第一次旋转的角度为a,第二次为b,现在的问题是如何求b,明显b=e,e=f-d=c-d,现在的问题的关键变成了如何求c,d,而c,d恰恰是旋转开始前后,两个手指x,y坐标差的反正切值arctan(△y/△x),又由于这是逆时针旋转,最后累计旋转的角度是-a-b。
最后附上实现的代码和效果图:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.