2011-11-22 55 views
2

在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; 
    } 
} 
+0

在這裏您可以找到[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

回答

3

開箱,Android不具備旋轉手勢檢測。

但是,您可以做的是從兩點觸摸事件計算旋轉角度。只需確定旋轉的支點(無論是2個觸摸點的中心點還是其中一個觸摸點),並確定第一個觸摸事件與第n個觸摸事件之間的角度增量。然後,您可以使用rotate()方法將給定的Canvas旋轉該量。

事實上,這可能很容易編寫自己的'手勢檢測器'。