0

サーフェス ビューを使用してキャンバスに 13 の異なるビットマップを描画したいと考えています (明らかに、サーフェス ビューを使用する理由は他にもあります)。この目的のために、無限ループでサーフェス ビューのメソッドを呼び出すゲーム スレッドを開始しました。このメソッドでは、ループ内で 13 の異なるビットマップを描画します。

しかし、Samsung galaxy s3、galaxy s2 などの一部の携帯電話や Motorola デバイスでは、ビットマップの一部がしばらくすると消えてしまいます。

ビットマップを描画するための私のコードは次のとおりです。

for (int i = 0; i < 13; i++) {              

            // Drawing Bushes
            canvas.drawBitmap(assets.bushes[this.bushes[i].frameNo - 1], null,
                    camera.getScaledRect(bushes[i].bounds.getRect()),
                    bitmapPaint);

            /*
             * drawBitmap(canvas, bushes[i],
             * assets.bushes[this.bushes[i].frameNo - 1], camera);
             */

            // Drawing Waves
            if (waves[i].alpha != 0) {
                bitmapPaint.setAlpha((int) (waves[i].alpha * 255));
                canvas.drawBitmap(assets.waves[this.waves[i].frameNo - 1],
                        null, camera.getScaledRect(waves[i].bounds.getRect()),
                        bitmapPaint);
                bitmapPaint.setAlpha(255);
            }    

        }
4

1 に答える 1

0

ここに答えがあるかもしれません。古いデバイスは追いつかないかもしれません。ビットマップをダウンサンプリングしてみてください。これにより、パフォーマンスが向上しました。集中すると画面がワイプされるようです。品質は少し失われますが。

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

public static int calculateInSampleSize( BitmapFactory.Options options, int reqWidth, int reqHeight);

public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight)

于 2013-10-21T23:53:02.393 に答える