2010-06-23 61 views
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); 

我在做什么错?

+0

您是否检查了您的透视图(160,215)相对于图像大小的位置? – hara 2010-06-23 08:18:19

+0

是的,我检查了它...我改变了我的支点相对于图像大小,但它围绕左上角枢轴点相同的方式旋转。你可以给我一个解决方案,在旋转动画中做..它旋转我想要的图像,但是当我想再次旋转它时,它会从初始位置开始旋转..请你引导我我希望当我再次旋转图像时,它从第一个动画结束的最后一个停止点开始。提前感谢 – Talha 2010-06-26 09:40:00

回答

0

如果我正确理解您的问题,您希望能够旋转图像一次,然后第二次,从停止的位置。

可以通过30度的图像一次旋转,然后通过30度(共60度)再次旋转的图像,但是这将导致质量损失和中心点会做到这一点不正确。

更好的解决方案是简单地更改每次使用的rAngle的值,并始终根据原始未旋转的源图像创建旋转的图像。因此,不是每次旋转(例如)30度,而是旋转30度或60度或90度等。

如果您希望图像每次点击一个按钮时旋转30度,点击变量中的点击次数,如buttonClicks,然后设置rAngle = buttonClicks * 30并执行旋转。