Как позволить пользователю рисовать на сколь угодно длинном холсте в Android? - PullRequest
0 голосов
/ 27 марта 2019

Я хочу создать приложение для создания заметок в Android, где пользователь сможет набирать заметки пальцем, прокручивать вверх, чтобы освободить место, когда страница заполнена, набросать еще немного и продолжать прокручивать, делая документ длиннееи строчить сколько угодно.

Если я использую растровое изображение (когда-либо расширяющееся) длину документа, у телефона будет очень мало памяти.

Как мне поступитьоб этом?Должен ли я думать о множественных растровых изображениях, с каким-то видом кэширования растровых изображений, обменивающихся растровыми изображениями при их прокрутке вверх и вниз?Какая-то функция Android, например, вид Recycler или что-то еще?

Боюсь, я не могу достаточно хорошо разобраться в проблеме, чтобы найти решение.Мне просто нужно указать правильное общее направление.

спасибо

Джон

1 Ответ

0 голосов
/ 27 марта 2019

Вы должны загрузить растровое изображение указанного размера и загрузить его на холст, затем вы можете рисовать, используя прослушиватели событий.

int width = WIDTH_IN_PIXELS, height = HEIGHT_IN_PIXELS;

Bitmap.Config config = Bitmap.Config.ARGB_8888; 
Bitmap bitmap = Bitmap.createBitmap(width, height, config); 

Canvas canvas = new Canvas(bitmap);

ARGB_8888 хранит 4 байта на одном пикселе. Итак, примерно 2000 * 2000 использует около

2000 * 2000 = 40 000 000 пикселей

Таким образом, общее количество байтов будет 40,00,000 * 4 =

1,60,00,000 байт

Таким образом, в МБ это будет 16 МБ , который не достигнет MemoryOut.

Итак, что вы можете сделать, это загрузить масштабированную (например, 320 * 320, требующую только 400 КБ) версию вашего более крупного холста в представлении переработчика, так же как и подача instagram, там много памяти не будет использоваться, потому что как вы прокручиваете представления будут переработаны.

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

...