在我的自定义视图中,我在onDraw方法中调用createBitmap。我有疑问,在onDraw中随时创建位图是否正确? 每当调用onDraw时,我都会创建新的位图,但旧的位图会发生什么?
答案 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);
代替。