首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓: CreateBitmap on onDraw

安卓: CreateBitmap on onDraw
EN

Stack Overflow用户
提问于 2014-03-14 08:02:17
回答 1查看 1.3K关注 0票数 1

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-14 08:05:11

这就是我们要走的路:

代码语言:javascript
复制
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不重新创建,请使用:

代码语言:javascript
复制
mBitmapCanvas.drawColor(Color.WHITE);

而不是。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22399289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档