#android #canvas #bitmap
Вопрос:
Я использую растровое изображение для рисования более одного рисунка на одном холсте. Скажем, я рисую линии, круги с разными радиусами на одном и том же холсте. Мое требование состоит в том, чтобы добавить 2000 таких холстов в мой вид карты. Изображение выглядит неровным, если я использую разрешение 256×256 в качестве растрового изображения.
Поэтому я использую разрешение 1024×1024 в качестве растрового изображения для лучшего качества. Теперь, когда я запускаю это на устройствах Android с низким объемом памяти, мое приложение зависает и выходит из строя.
Постановка проблемы :
- Размер растрового изображения — 1024*1024 = отлично работает на устройствах с большим объемом памяти, таких как устройства one plus, но зависает при низком объеме памяти[менее 4 ГБ]
- Размер растрового изображения — 256 * 256 = отлично работает на обоих устройствах Android.
Вот фрагмент кода, используемый в настоящее время для рисования на холсте с помощью растрового изображения.
Bitmap bitmap = Bitmap.createBitmap(1024, 1024, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
// круг для рисования
canvas.drawCircle(width/2, height/2, 2, paint);
// линия рисования
canvas.drawLine(cx, cy, x2, y2, paint);
// Один и тот же холст с разным радиусом
canvas.drawArc(endgunRect, startAngle - 90, endSweep, false, paint);
Ожидаемое решение :
Мне нужно загрузить около 2000 устройств в представление карты приложения на всех типах устройств Android независимо от емкости хранилища устройств?
Может ли кто-нибудь посоветовать, есть ли у нас какой-либо другой подход, кроме растрового изображения на холсте?
Комментарии:
1.
When I try to load 700 devices on the map view,
??? Загрузочные устройства? На виде карты? Вы еще не говорили о представлении карты? Совершенно непонятно, что вы пытаетесь сделать.
Ответ №1:
Растровое изображение хранится в bitmap heap
том, что находится внутри Dalvik heap
, и часто вызывает проблемы с памятью при использовании в большем количестве. Я также столкнулся с подобной проблемой, и есть несколько моментов, которые вы можете использовать для обеспечения того, чтобы устройства никогда не выходили из памяти.
- Попробуйте уменьшить размер растрового изображения или сделать его динамичным в соответствии с размером устройства.
- Повторное использование растрового изображения, все растровые изображения не будут уникальными, поэтому лучше хранить растровые изображения с запятыми в hashmap и повторно использовать их.
- Не загружайте все растровые изображения сразу, загружайте только перекрытия, видимые пользователю на экране. Переопределите
scroll listener
на картах и загружайте больше по мере прокрутки пользователем. - Самое главное — выпускайте растровые изображения, как только они не используются, используя
bitmap.release