Android可旋转ImageView

时间:2011-09-15 21:37:02

标签: java android graphics canvas

我正在尝试创建一个可旋转的ImageView,我将指定某个角度和枢轴点,并看到它围绕该枢轴点旋转。我试过这样的事情:

Matrix matrix = new Matrix();
matrix.postRotate(45, imageView.getWidth(), imageView.getHeight());
imageView.setScaleType(ScaleType.MATRIX);
imageView.setImageMatrix(matrix);

但是postRotate方法的参数(第二个和第三个 - 枢轴点)完全没有变化。即使它们是0,0,它们也是一样的。

所以我想创建一个ImageView,它在初始化时会旋转一定的角度。在这个例子中45度。我试着设置界限和工作人员..没有帮助。

我该怎么做? :/

3 个答案:

答案 0 :(得分:14)

您可以使用setRotation(int);

旋转ImageView
// rotate imageView 45 around center pivot point
imageView.setPivotX(imageView.getWidth()/2);
imageView.setPivotY(imageView.getHeight()/2);
imageView.setRotation(45);

参考:http://goo.gl/WhhGM 编辑:我不得不缩短链接因为a)在网址中,有些浏览器不喜欢这样。

答案 1 :(得分:0)

这是我在我的应用中使用view.setRotation(浮动角度)的方式,希望它会有所帮助:

//to make rotation use next code
imageView.setPivotX(imageView.getWidth() / 2);
imageView.setPivotY(imageView.getHeight() / 2);
imageView.setRotation(45);

//to reset rotate state to initial position    
imageView.setPivotX(imageView.getWidth() / 2);
imageView.setPivotY(imageView.getHeight() / 2);    
imageView.setRotation(0);

根据Spencer

的回答

答案 2 :(得分:-1)

此功能对我有用。

public static Bitmap rotateImage (Bitmap srcBitmap, int width, int height, int rotation)
    {
        // create rotated image
        Matrix matrix = new Matrix();
        rotation =  (rotation +1 )   % 3;
        rotation = rotation * 90;
        matrix.postRotate( rotation,
                width,
                height );
        Bitmap rotatedBmp = Bitmap.createBitmap( srcBitmap,
                0,
                0,
                srcBitmap.getWidth(),
                srcBitmap.getHeight(),
                matrix,
                false );

        return rotatedBmp;
    }