在我的自定义视图中,我在onDraw方法中调用createBitmap。我怀疑,在onDraw上随时创建位图是否正确?每当调用onDraw时,我都会创建新的位图,但是旧的位图会怎样?
这是要走的路:
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)
代替。
| 归档时间: |
|
| 查看次数: |
1142 次 |
| 最近记录: |