Android:图片轮换不希望调整大小

时间:2013-05-18 11:40:34

标签: android bitmap rotation

我有一个用于旋转ImageView的代码,并且很好。 问题是旋转过程中图像的大小发生了变化,我希望不会发生这种情况。

图片的xml代码

<ImageView
        android:id="@+id/imgBallesta"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/imgballesta"
        android:contentDescription="@string/imageString"
         />

创建位图的代码,我将此代码放在类

的声明中
Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.imgObjectImage);

旋转图像的代码,此代码包含在onTouchEvent

Matrix mat = new Matrix();
matrix.postRotate((float) (angle*180/Math.PI), image.getWidth(),image.getHeight());
Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(), matrix, true);
image.setImageBitmap(bMapRotate);

感谢您的帮助,并阅读我的问题

2 个答案:

答案 0 :(得分:2)

尝试使用我的方法旋转图片:

public static Bitmap rotate(Bitmap src, float degree) {
    // create new matrix
    Matrix matrix = new Matrix();
    // setup rotation degree
    matrix.postRotate(degree);

    // return new bitmap rotated using matrix
    return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);
}
祝你好运!!

答案 1 :(得分:0)

我找到了解决问题的方法。首先,我修改图像的大小和高度,并为所有可绘制文件夹创建相应的图像。 然后我使用下一个代码来为图像设置动画。

Matrix matrix=new Matrix();
img.setScaleType(ScaleType.MATRIX);   //required
matrix.postRotate((float) (a*180/Math.PI) , img.getWidth()/2, img.getHeight()/2);
img.setImageMatrix(matrix);

感谢您的回复并阅读了这个问题。