Android:onDraw上的CreateBitmap

1 memory android ondraw

在我的自定义视图中,我在onDraw方法中调用createBitmap。我怀疑,在onDraw上随时创建位图是否正确?每当调用onDraw时,我都会创建新的位图,但是旧的位图会怎样?

Phi*_*oda 5

这是要走的路:

private Bitmap mBitmap;
private Canvas mBitmapCanvas;
private Paint mDrawPaint = new Paint();

@Override
protected void onDraw(Canvas canvas) {

    if (mBitmap == null) {
        mBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.RGB_565);
        mBitmapCanvas = new Canvas(mBitmap);
    }

    mBitmapCanvas.drawColor(Color.WHITE); // clear previously drawn stuff

    // draw stuff...
    mBitmapCanvas.drawLine(....);

    canvas.drawBitmap(mBitmap, 0, 0, mDrawPaint);
}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,应该避免onDraw(Canvas c)方法内部分配内存(new-operator)。但是,您可以检查变量是否已创建,并避免重新分配

为了重置您的Bitmap请不要重新创建它,请使用:

mBitmapCanvas.drawColor(Color.WHITE);
Run Code Online (Sandbox Code Playgroud)

代替。