Android 围绕中心旋转图像

Android 围绕中心旋转图像,android,Android,如何围绕图像的中心点旋转图像?这会旋转它,但也会移动它: Matrix mat = new Matrix(); mat.postRotate(45); Bitmap bMapRotate = Bitmap.createBitmap(dialBM, 0, 0, dialBM.getWidth(),dialBM.getHeight(), mat, true); dial.setImageBitmap(bMapRotate); 我已经检查了这个站点上的其他示例,但是它们要么无法工作,要么使用c

如何围绕图像的中心点旋转图像?这会旋转它,但也会移动它:

 Matrix mat = new Matrix();
 mat.postRotate(45);
 Bitmap bMapRotate = Bitmap.createBitmap(dialBM, 0, 0, dialBM.getWidth(),dialBM.getHeight(), mat, true);
dial.setImageBitmap(bMapRotate);

我已经检查了这个站点上的其他示例,但是它们要么无法工作,要么使用canvas,我不希望使用canvas。

postRotate的第二个和第三个参数是x和y轴点

 mat.postRotate(45, dialBM.getWidth()/2, dialBM.getHeight()/2);

可能是因为矩阵围绕(0,0)旋转,而不是位图的中间。您应该声明两个附加矩阵—一个用于将位图的中心移动到(0,0)(按-getWidth()/2,-getHeight(2))移位,另一个用于将位图的中心移回(0,0)。将这三个矩阵相乘,然后得到结果。

哦,这确实更简单,尽管我想它内部符合我的建议。这不起作用。我的刻度盘会旋转,但不会绕其中心旋转。请将第二个和第三个参数更改为您希望它旋转的位置。(
postRotate(degrees,pivotX,pivotY)
)我这样做了,我想让它绕着刻度盘中心旋转,如果我错了,请更正我的错误是宽度和高度除以2?是的,图像的中心是高度/2和宽度/2。我建议在编辑器中打开图像,找到您希望它旋转的确切位置。