Можем ли мы аппаратно ускорить закадровый холст?

Я создаю закадровое растровое изображение + холст, рисую в нем кучу меньших растровых изображений, а затем рисую их в представлении. Метод isHardwareAccelerated() возвращает false для моего холста:

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

Я вижу, что холст, предоставленный мне в методе 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() вместо использования холста за пределами экрана. Производительность намного лучше.

Тем не менее, было бы неплохо включить аппаратное ускорение для закадрового холста, для этого определенно есть множество вариантов использования.


person user291701    schedule 08.11.2013    source источник
comment
Вы уже прочитали Аппаратное ускорение — просмотр слоев? ?   -  person Geobits    schedule 08.11.2013