Где хранить изображения в Android - PullRequest
1 голос
/ 16 февраля 2020

Я переместил все свои изображения из папки mipmap в нарисованную, потому что здесь было сказано, что папка mipmap предназначена только для значков приложений, чтобы запускать приложение Mipmaps против нарисованных папок (ответ получил 841 лайков ). Однако, когда я теперь хочу запустить свое приложение, я получаю сообщение об ошибке

 FATAL EXCEPTION: main
    Process: com.example.td.barapp, PID: 4331
    java.lang.RuntimeException: Canvas: trying to draw too large(188394348bytes) bitmap.
        at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)

. В нескольких реальных вопросах люди советуют хранить изображения в разных папках для рисования (см. Android: Общие сведения о папке для рисования ) как drawable-xxhdpi или drawable-xxxhdpi.

Обновление: кто-то в этом посте сказал мне (кто позже удалил свои ответы) сохранить изображение (размером 1,7 МБ) в папке drawable-anydpi. Я сделал, как он сказал, но результат на эмуляторе выглядит довольно плохо для просмотра изображений (см. Скриншот): Comparison of the emulator output of the same file Затем я переместил тот же файл обратно в папку mipmap-xxxhdpi, и теперь он снова выглядит хорошо , Итак, мой вопрос сейчас заключается в том, можно ли использовать изображение в папке mipmap-xxxhdpi вместо папки drawable? Я был бы рад каждому совету, потому что сейчас я в замешательстве.

1 Ответ

1 голос
/ 20 февраля 2020

java .lang.RuntimeException: Canvas: попытка нарисовать слишком большой (188394348байт) растровый рисунок

Это исключение в основном потому, что вы пытаетесь отобразить большое изображение ~ 188 МБ, которое будет имеют высокое разрешение, и android накладывает ограничение на это. Здесь также сообщается здесь .

Одна из причин заключается в экономии ресурсов устройства; например, вы можете получить java.lang.OutOfMemory, поэтому система сэкономит память устройства.

1 , 2 , 3 может помочь вам в этом.

Обычно вы можете использовать несколько мегабайт изображение в вашем приложении ~ 0-3 МБ. Сторонние библиотеки, такие как Glide & Picasso , предлагают методы управления дисками, сетями и памятью при отображении изображений в ваших ImageViews.

Один из вариантов, который вы можете рассмотреть, - это измените размеры изображений перед их загрузкой, так что можете посмотреть этот вопрос.

Имейте в виду, что android накладывает ограничение на ваш apk-файл в магазине приложений, поэтому вам нужно минимизировать изображения по этой причине или загрузите их с внутреннего сервера.

Как вы упоминали, вы можете помещать значки приложений только в res \ mipmap. И если вы решите поместить изображения в свое приложение, будет эффективно создавать их с различной плотностью (hdpi, xhdpi, xxhdpi, xxxhdpi ...), чтобы они могли соответствовать любому разрешению устройства и позволяли избежать искаженных изображений. или высокая обработка ОС android для соответствия вашего изображения разрешению устройства перед его отображением.

...