0

我有一个扩展 SurfaceView(Android 应用程序 API 级别 8)的活动。需要将位图绘制到背景而不是简单的颜色。我能够在画布上绘制位图 --> 使用 void 渲染(画布画布)中的注释代码,但它导致性能太低。

如果我们使用位图,渲染会变得很慢,但是如果我们只绘制颜色,那么一切都很好。

代码有问题吗?我们如何在不影响性能的情况下设置背景图像?

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

也许您应该将您的位图创建为一个字段并在您的渲染方法()之外对其进行解码,例如:

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 回答