7

我正在创建一个屏幕外位图+画布,将一堆较小的位图绘制到其中,然后将其绘制到视图中。isHardwareAccelerated() 方法为我的画布返回 false:

mBitmap = new Bitmap(500, 500, Bitmap.Config.RGB_565);
mCanvas = new Canvas(mBitmap);
mCanvas.isHardwareAccelerated(); // false

我可以看到在 View 的 onDraw() 方法中给我的画布是硬件加速的:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    canvas.isHardwareAccelerated(); // true

    // My current approach, but maybe better to draw directly
    // to the view's canvas if it's hardware accelerated?
    canvas.drawBitmap(mBitmap, ...);
}

我想知道我们是否可以为屏幕外画布打开它?

我还想知道我是否应该直接绘制到视图的硬件加速画布而不是打扰屏幕外的画布,如果它不会被加速的话。我认为首先将所有内容绘制到屏幕外会更快。

我必须重新组织我的代码来测试这一点,只是想知道我是否遗漏了一些明显的离屏代码。

谢谢

- - - - 更新 - - - - - - - - - - - - - - - - - -

我重构了我的绘制代码,直接在 onDraw() 中绘制到视图的画布,而不是使用屏幕外画布。性能要好很多。

不过,为屏幕外画布启用硬件加速仍然很好,肯定有很多用例。

4

0 回答 0