Almero の Android Gesture Detectors を使用しようとしているので、適切な解決策を見つけるために同じことを行うことにしました。
public class MainActivity extends Activity {
private RotateGestureDetector mRotateDetector;
private float mRotationDegrees = 0.f;
private static final float ROTATION_RATIO = 2;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRotateDetector = new RotateGestureDetector(getApplicationContext(), new RotateListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mRotateDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
private class RotateListener extends RotateGestureDetector.SimpleOnRotateGestureListener {
@Override
public boolean onRotate(RotateGestureDetector detector) {
mRotationDegrees -= detector.getRotationDegreesDelta();
ImageView v = (ImageView) findViewById(R.id.imageView);
// For NineOldAndroids library only!
ViewHelper.setRotation(v, mRotationDegrees * ROTATION_RATIO);
// For HONEYCOMB and later only!
v.setRotation(mRotationDegrees * ROTATION_RATIO);
return true;
}
}
}
私にとっては問題なく動作します (2 本指の回転ジェスチャで ImageView を回転させることができます。注: 適切な回転メソッド呼び出しを選択することを忘れないでください。注意を引くために両方にコメントしました。
ROTATION_RATIO は、指の動きに対する回転応答を高速化するための単なる乗数です。ビューには任意の回転軸 (setRotation()、setRotationX()、および setRotationY()) メソッドを使用できます。
API レベルが 11 未満の Android デバイス (Honeycomb 以前のデバイス) でこのコードのサポートを有効にするには、NineOldAndroid ライブラリを使用することをお勧めします。