2015-10-27 3 views
1

У меня есть relativelayout с тремя полноэкранными дочерними представлениями одного и того же пользовательского класса вида. Мне интересно, следует ли беспокоиться о памяти. Судя по этому ответу: Understanding Canvas and Surface conceptsЕсть ли у каждого вида собственный холст/растровое изображение?

Все представления передают один и тот же холст с базовым растровым рисунком, чтобы рисовать, чтобы память не увеличивалась. Может ли кто-нибудь подтвердить? Это имело бы смысл, иначе полноэкранное текстовое представление было бы очень неэффективным.

Бонус: это цель холста для определения области рисования растрового изображения и перевода координат вида в растровые координаты?

ответ

1

Согласно документации http://developer.android.com/guide/topics/graphics/2d-graphics.html#draw-with-canvas:

Когда вы пишете приложение, в котором вы хотели бы выполнить специализированный рисунок и/или контролировать анимацию графики, вы должны сделать это, опираясь через Canvas , Canvas работает для вас как притворство или интерфейс, на фактическую поверхность, на которой будет нарисована ваша графика, - она ​​содержит все ваши призывы «рисовать». Через Canvas ваш рисунок фактически выполняется на базовом Bitmap, который помещается в окно.

В onDraw(Canvas canvas) вам предоставляется объект canvas. Этот canvas имеет базовый bitmap. Все представления не имеют одинакового полотна. Холст - это всего лишь слой над общим bitmap (который является пикселем на экране). canvas предлагает вам манипулировать bitmap столько, сколько вы хотите. Таким образом, каждый вид имеет холст, но не собственный растровый рисунок.

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

+0

Спасибо. Принято. –

Смежные вопросы