画面にスプライト シート アニメーションを描画しようとしていますが、このコードを使用していたときは問題なく動作していました。
canvas.drawColor(Color.TRANSPARENT);
Rect src = new Rect(CurrentSprite.x * SheetSize.x, CurrentSprite.y * SheetSize.y, (CurrentSprite.x * SheetSize.x) + SheetSize.x, (CurrentSprite.y * SheetSize.y) + SheetSize.y);
Rect dst = new Rect(X, Y, X + SheetSize.x, Y + SheetSize.y);
canvas.drawBitmap(bmp, src, dst, null);
ただし、画面に描画する前に画像を回転させる必要があります。コードを変更して、スプライトのローカル コピーを作成します。これを描くつもりですが、ここで問題が発生します。Bitmap.createBitmap メソッドを使用していますが、画面を見ると完全なスプライト シートが画面に描画され、OutOfMemoryException が発生することがあるため、このメソッドは何もしないようです (完全な画像が非常に大きいため理解できます)。
canvas.drawColor(Color.TRANSPARENT);
Matrix matrix = new Matrix();
matrix.postRotate(Degrees);
Bitmap tempAnimationBmp = Bitmap.createBitmap(bmp, CurrentSprite.x * SheetSize.x, CurrentSprite.y * SheetSize.y, (CurrentSprite.x * SheetSize.x) + SheetSize.x, (CurrentSprite.y * SheetSize.y) + SheetSize.y, matrix, true);
canvas.drawBitmap(tempAnimationBmp, X, Y, null);
tempAnimationBmp.recycle();
完全なスプライト シートを取得するのはなぜですか?