当使用位图时,如何使我的图像围绕固定点旋转?

3

我正在尝试围绕一个固定点旋转图像,但是图像在其左上角位置旋转。我尝试了rotateAnimation,它很好用,但问题是当我再次旋转图像时,它会从原始位置开始旋转。

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.arw2);
int w = bmp.getWidth();
int h = bmp.getHeight();
float px = 160,py = 215;
Matrix mtx = new Matrix();
mtx.setRotate(rAngle, px, py);
Bitmap rotatedBMP = Bitmap.createBitmap(bmp, 0, 0, w, h, mtx, true);
BitmapDrawable bmd = new BitmapDrawable(rotatedBMP);
myImageView.setImageDrawable(bmd);

我做错了什么?


你有没有检查一下你的中心点(160,215)相对于图像尺寸的位置? - hara
是的,我已经检查过了...我相对于图像大小改变了我的枢轴点,但它仍然以左上角枢轴点相同的方式旋转。你能给我一个解决方案,在旋转动画中实现它吗?它按照我想要的方式旋转我的图像,但当我想再次旋转它时,它会从初始位置开始旋转...你能指导我吗?我希望当我再次旋转我的图像时,它从第一次动画结束的最后停止点开始。提前致谢。 - Talha
1个回答

0
如果我理解您的问题正确,您想要能够将图像旋转一次,然后从上一次结束的地方再次旋转。
您可以通过旋转图像30度一次,然后再次旋转该图像30度(总共60度)来实现这一点,但这会导致质量损失并且中心点不正确。
更好的解决方案是简单地每次更改您使用的rAngle的值,并始终基于原始未旋转的源图像创建旋转后的图像。因此,您可以每次旋转30度、60度、90度等,而不是每次旋转(例如)30度。
如果您希望图像每次点击按钮都旋转30度,您可以将单击次数存储在变量中,例如buttonClicks,然后设置rAngle = buttonClicks * 30并执行旋转。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接