2012-07-14 103 views
2

我創建了一個位圖圖像,它是一個圓形,並且比我想要的更加動畫,所以我將它轉換爲bitmapdrawable,並將其添加到動畫繪製中。但是由於這個圓形已經改變以橢圓形...在android中動畫位圖圖像

那麼我該怎麼辦?

是否有任何其他方法只動畫位圖文件。 ?

在此先感謝..

回答

3

不,你不能與android animation framwork動畫bitmap本身。您可以直接動畫ViewViewGroup和所有從ViewViewGroup派生的類。

請致電viewImageView包含位圖。

TranslateAnimation slide = new TranslateAnimation(view.getX(), view.getX() + 100, view.getY(), view.getY() + 100); 
slide.setDuration(1000); 
view.startAnimation(slide) 

應該如果你使用Canvas從當前位置

+0

那麼我應該怎麼做動畫我創建使用位圖的圓? – aagam94 2012-07-14 10:36:39

+2

將位圖放入視圖中,併爲視圖本身設置動畫。我將用一個例子編輯我的答案 – Blackbelt 2012-07-14 10:38:53

3

翻譯ImageView通過100px,我建議持有指向當前的位圖和加載所有其他位圖到一個數組。

說,

Bitmap[] frames = new Bitmap[10] //10 frames 
Bitmap frame[0] = BitmapFactory.decodeResource(getResources(), R.drawable.circlefram1); 
Bitmap frame[1] = BitmapFactory.decodeResource(getResources(), R.drawable.circlefram2); 
... 

通過在你感興趣的框架指向選擇設置currentFrame。

Bitmap currentBitmap = frame[3]; // 4th frame 

所以,當你調用drawBitmap(currentBitmap)它只會吸引你的框架感興趣。您可以通過爲幀動畫分配fps來爲每幀這麼多幀更改位圖。

如果您只是想縮放或旋轉位圖(旋轉圓圈?),調整位圖大小的最佳方法是使用createScaledBitmap,並使用矩陣進行旋轉。

縮放,你的任何位圖加載到內存中這樣

Bitmap circleBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.circle); 

如果你想圓(或位圖)重新調整,你會做這樣的事情:

Bitmap scaledCircle = Bitmap.createScaledBitmap(circleBitmap, dstWidth, dstHeight, filter); 

凡dstWidth和dstHeight是目標目標寬度和高度,您可以通過縮放原始寬度和高度來計算。

int scaledHeight = circleBitmap.getHeight()/2; 
int scaledWidth = circleBitmap.getWidth()/2; 

最後,你通常會畫出用帆布這樣

canvas.drawBitmap(bitmap) 

對於旋轉該位圖,創建一個矩陣

Matrix mat; 
mat.postRotate(degrees); // Rotate the matrix 
Bitmap rotatedBitmap = Bitmap.createBitmap(originalBitmap, x, y, width, height, mat, filter); 

最後

canvas.drawBitmap(rotatedBitmap); 

保持記住畫布對於遊戲或其他任何實時都很慢!

希望它有幫助。