0

我有一个旋转 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);

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

4

2 回答 2

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);
}

祝你好运!!

于 2013-05-18T11:47:41.520 回答
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);

感谢您的回复并阅读此问题。

于 2013-05-20T16:53:43.087 回答