我有一个用于旋转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);
感谢您的帮助,并阅读我的问题
答案 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);
感谢您的回复并阅读了这个问题。