3

円であるビットマップ画像を作成しましたが、アニメーション化したかったので、ビットマップ描画可能に変換してから、アニメーション描画可能に追加しました。しかし、これにより、円の形が楕円形に変わりました...

だから私は何をすべきですか?

ビットマップファイルのみをアニメーション化する他の方法はありますか??

前もって感謝します..

4

2 に答える 2

5

Canvasを使用している場合は、現在のビットマップへのポインタを保持し、他のすべてのビットマップを配列にロードすることをお勧めします。

言う、

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);

キャンバスはゲームやリアルタイムのものでは遅いことに注意してください!

それが役に立てば幸い。

于 2012-07-14T10:36:32.027 に答える
4

bitmapいいえ、で自分自身をアニメーション化することはできませんandroid animation framworkViewsまたはsと、およびViewGroupから派生するすべてのクラスを直接アニメーション化できます。ViewViewGroup

ビットマップを含むを呼び出しviewます。ImageView

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

現在の位置からImageViewbyを変換する必要があります100px

于 2012-07-14T10:35:31.317 に答える