我想使用onTouch将图像旋转360度。使用我使用的代码我得到的最大旋转是120度。我使用的代码是
这是onTouch事件中的代码
case MotionEvent.ACTION_MOVE:
newRot = rotation(event);
float r = newRot - d;
matrix.postRotate(r, view.getMeasuredWidth()/ 2, view.getMeasuredHeight()/ 2);
,旋转方法是
private float rotation(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);
Log.v("", "=================xxxxxxxxxxxvvvxx==============" + Math.toDegrees(radians));
return (float) Math.toDegrees(radians);
}
使用此代码我在clockwisw和逆时针方向上只能旋转120度。请建议我,我是否需要更改代码或任何有效代码中的任何内容。
答案 0 :(得分:0)
这种方法可能对你有用。
public static Bitmap rotate(Bitmap b, int degrees) {
if (degrees != 0 && b != null) {
Matrix m = new Matrix();
m.setRotate(degrees, (float) b.getWidth() / 2,
(float) b.getHeight() / 2);
try {
Bitmap b2 = Bitmap.createBitmap(b, 0, 0, b.getWidth(),
b.getHeight(), m, true);
if (b != b2) {
b.recycle();
b = b2;
}
} catch (OutOfMemoryError ex) {
throw ex;
}
}
return b;
}