"Холст: попытка рисовать слишком большое растровое изображение", когда размер экрана Android N установлен больше, чем Small
У меня есть опубликованное приложение, которое разбивается при запуске на Android N, когда новая версия ОС Display size
установлена в слишком большое значение.
Когда я смотрю в logcat, я вижу следующее сообщение:
java.lang.RuntimeException: Canvas: trying to draw too large(106,975,232 bytes) bitmap.
Я прорисовал проблему в ImageView в своем первом мероприятии, которое показывает хорошее большое фоновое изображение. Образец, о котором идет речь, составляет 2048x1066 и находится в моем общем каталоге drawables
, поэтому независимо от плотности это изображение будет использоваться.
Все работает нормально, если параметр Display size
Small
. Но когда я поднимаюсь до Default
, он перестает работать. Если я затем меняю изображение с меньшим, он работает с Default
, но если я перейду к Large
, он перестанет работать снова.
Я предполагаю, что настройка Display size
вверх приводит к тому, что ваше устройство будет вести себя как физически меньшее устройство с более высокой плотностью пикселей. Но я не понимаю, что я должен здесь делать. Если я буду постепенно увеличивать изображения для получения более высоких разрешений, он не будет выглядеть хорошо на фактически больших дисплеях. Или я что-то не понимаю?
Любые указатели будут очень благодарны.
Ответы
Ответ 1
В моем случае, перемещение (hi-res) растрового изображения всплеска от drawable до drawable-xxhdpi было решением.
У меня была та же проблема. Я не подозревал, что мой экран заставки является проблемой, поскольку он отображается, когда приложение запущено, но оказалось, что заставкой является проблема.
Заставка в моем случае имеет разрешение xxhdpi, и она была ошибочно помещена в папку с возможностью переноса, а не drawable-xxhdpi. Это заставило Android предположить, что заставка имеет разрешение mdpi и масштабирует изображение до 3 * 3 раза, когда требуется размер, и пытается создать растровое изображение.
Ответ 2
Не знаю, поможет ли это кому-нибудь, но я просто оставлю это здесь. В моем случае проблема была только на устройствах Sumsung с Android 7, и проблема была в пропорциях заставки. после изменения высоты на 1024 px - все работает нормально
Ответ 3
Переместите изображение в drawable в mipmap-xxhdpi. Ваше изображение в формате растрового изображения, поэтому вы должны поместить свое изображение в папку mipmap, затем оно будет работать
Ответ 4
Попробуйте использовать класс Bitmap.Factory, эта ссылка поможет вам
Эффективная загрузка больших растровых изображений
Ответ 5
Файлы значков слишком велики для Android для эффективной и плавной загрузки. Android распознает это с помощью своих интеллектуальных алгоритмов.
Вы можете изменить размер файлов значков с помощью Final Android Resizer с помощью asystat. Измените их на "xhdpi" или ниже.
Поместите измененные фотографии с возможностью рисования или перезаписи поверх существующих больших файлов значков.
Затем вы закончили.
Ответ 6
Автоматически создавайте рисунки из крупномасштабного изображения, загрузив плагин. Пожалуйста, проверьте эту ссылку
Ответ 7
Если вы используете Glide и загружаете 1 Кб изображений за раз или несколько изображений, то это проблема скольжения или того, что вы делаете, чтобы установить вид изображения. Вы можете решить это, просто применяя масштабирование в glide.
Ответ 8
В моем случае я решил проблему после добавления android:hardwareAccelerated="false"
в applicationg
g файла манифеста.
Ответ 9
В моем случае я просто изменил холст изображения, который используется в фоновом режиме, используя Paint3d (или вы можете использовать любой другой). Здесь я делюсь скриншотом просто пройти через это.