0

SurfaceView(AndroidアプリケーションAPIレベル8)を拡張するアクティビティがあります。単純な色ではなく、背景にビットマップを描画する必要があります。void render(Canvas canvas)でコメント化されたコードを使用してキャンバスにビットマップを描画することはできましたが、パフォーマンスが低下しすぎます。

ビットマップを使用するとレンダリングが遅くなりますが、カラーを描画するだけであればすべて問題ありません。

コードに問題はありますか?パフォーマンスに影響を与えずに背景画像を設定するにはどうすればよいですか?

public class MainGamePanel extends SurfaceView implements
        SurfaceHolder.Callback {
public void render(Canvas canvas) {


        canvas.drawColor(Color.WHITE);
        /*
        Rect dest = new Rect(0, 0, getWidth(), getHeight());
        Paint paint = new Paint();
        paint.setFilterBitmap(true);

        Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.background_play);
        canvas.drawBitmap(myBitmap, null, dest, paint);
        */
        droid.draw(canvas);
    }
}
4

1 に答える 1

2

たぶん、あなたはあなたのビットマップをフィールドとして作成し、それをあなたのrendermethod()の外で次のようにデコードするべきです:

public class MainGamePanel extends SurfaceView implements
    SurfaceHolder.Callback {

    private Bitmap myBitmap; //creating a field

    public MainGamePanel() {

        myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.background_play); //decode bitmap in constructor

    }

    public void render(Canvas canvas) {


    canvas.drawColor(Color.WHITE);

    Rect dest = new Rect(0, 0, getWidth(), getHeight());
    Paint paint = new Paint();
    paint.setFilterBitmap(true);

    canvas.drawBitmap(myBitmap, null, dest, paint); //draw your bitmap

    droid.draw(canvas);
    }
}
于 2013-02-14T09:32:19.733 に答える