Android:onDraw上的CreateBitmap

时间:2014-03-14 08:02:18

标签: android memory ondraw

在我的自定义视图中,我在onDraw方法中调用createBitmap。我有疑问,在onDraw中随时创建位图是否正确? 每当调用onDraw时,我都会创建新的位图,但旧的位图会发生什么?

1 个答案:

答案 0 :(得分:4)

这是要走的路:

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);
}

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

要重置Bitmap不要重新创建,请使用:

mBitmapCanvas.drawColor(Color.WHITE);

代替。