使用ontouch将图像旋转360度

时间:2014-11-13 09:49:26

标签: android image-rotation

我想使用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度。请建议我,我是否需要更改代码或任何有效代码中的任何内容。

1 个答案:

答案 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;
}