的Android捏/双指上视图旋转
问题描述:
在iPhone我简单地做到这一点(和它完美的作品):的Android捏/双指上视图旋转
view.transform = CGAffineTransformRotate(变换,[(UIRotationGestureRecognizer *)识别旋转]);
我当然期待在Android方面做更多的工作(像往常一样)。我注意到Android没有双手旋转手势检测器。有关我如何实现这种行为的任何想法?
这是我用我的捏规模探测器:
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
mScaleFactor *= detector.getScaleFactor();
// Don't let the object get too small or too large.
mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 5.0f));
invalidate();
return true;
}
}
答
开箱,Android不具备旋转手势检测。
但是,您可以做的是从两点触摸事件计算旋转角度。只需确定旋转的支点(无论是2个触摸点的中心点还是其中一个触摸点),并确定第一个触摸事件与第n个触摸事件之间的角度增量。然后,您可以使用rotate()方法将给定的Canvas旋转该量。
事实上,这可能很容易编写自己的'手势检测器'。
在这里您可以找到[RotateGestureDetector](https://code.google.com/p/rosjava/source/browse/android_honeycomb_mr2/src/org/ros/android/view/visualization/RotateGestureDetector(未经测试)的.java?规格= svn.android.e76dac9e27992b33a1c8903ceb0f2ab08fe55b38及回购= Android和R = d006dfeaf30051cb7e9feb8211f1f20a6a01fac1) – naufraghi