在我的自定义视图中,我在createBitmap方法中调用onDraw。我怀疑,在onDraw中的任何时候创建位图是否正确?任何时候当onDraw调用时,我都会创建新的位图,但是旧的位图会发生什么呢?
发布于 2014-03-14 08:05:11
这就是我们要走的路:
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);
}如果可能的话,您应该避免在方法中分配内存(新操作符)。但是,您可以检查您的变量是否已经创建,并且避免重新分配。
为了重置您的Bitmap,不重新创建,请使用:
mBitmapCanvas.drawColor(Color.WHITE);而不是。
https://stackoverflow.com/questions/22399289
复制相似问题