2010-06-23 67 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並執行旋轉。