我創建了一個位圖圖像,它是一個圓形,並且比我想要的更加動畫,所以我將它轉換爲bitmapdrawable,並將其添加到動畫繪製中。但是由於這個圓形已經改變以橢圓形...在android中動畫位圖圖像
那麼我該怎麼辦?
是否有任何其他方法只動畫位圖文件。 ?
在此先感謝..
我創建了一個位圖圖像,它是一個圓形,並且比我想要的更加動畫,所以我將它轉換爲bitmapdrawable,並將其添加到動畫繪製中。但是由於這個圓形已經改變以橢圓形...在android中動畫位圖圖像
那麼我該怎麼辦?
是否有任何其他方法只動畫位圖文件。 ?
在此先感謝..
不,你不能與android animation framwork
動畫bitmap
本身。您可以直接動畫View
或ViewGroup
和所有從View
和ViewGroup
派生的類。
請致電view
ImageView
包含位圖。
TranslateAnimation slide = new TranslateAnimation(view.getX(), view.getX() + 100, view.getY(), view.getY() + 100);
slide.setDuration(1000);
view.startAnimation(slide)
應該如果你使用Canvas從當前位置
翻譯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);
保持記住畫布對於遊戲或其他任何實時都很慢!
希望它有幫助。
那麼我應該怎麼做動畫我創建使用位圖的圓? – aagam94 2012-07-14 10:36:39
將位圖放入視圖中,併爲視圖本身設置動畫。我將用一個例子編輯我的答案 – Blackbelt 2012-07-14 10:38:53