円であるビットマップ画像を作成しましたが、アニメーション化したかったので、ビットマップ描画可能に変換してから、アニメーション描画可能に追加しました。しかし、これにより、円の形が楕円形に変わりました...
だから私は何をすべきですか?
ビットマップファイルのみをアニメーション化する他の方法はありますか??
前もって感謝します..
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);
キャンバスはゲームやリアルタイムのものでは遅いことに注意してください!
それが役に立てば幸い。
bitmap
いいえ、で自分自身をアニメーション化することはできませんandroid animation framwork
。View
sまたはsと、および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)
現在の位置からImageView
byを変換する必要があります100px