我正在创建一个离屏位图+画布,将一堆较小的位图绘制到其中,然后将其绘制到视图中。 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()中直接绘制视图的画布,而不是使用离屏画布。表现更好。
为屏幕外画布启用硬件加速仍然很不错,但肯定会有大量的用例。