我正在尝试创建一个可旋转的ImageView,我将指定某个角度和枢轴点,并看到它围绕该枢轴点旋转。我试过这样的事情:
Matrix matrix = new Matrix();
matrix.postRotate(45, imageView.getWidth(), imageView.getHeight());
imageView.setScaleType(ScaleType.MATRIX);
imageView.setImageMatrix(matrix);
但是postRotate方法的参数(第二个和第三个 - 枢轴点)完全没有变化。即使它们是0,0,它们也是一样的。
所以我想创建一个ImageView,它在初始化时会旋转一定的角度。在这个例子中45度。我试着设置界限和工作人员..没有帮助。
我该怎么做? :/
答案 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;
}