“Холст: попытка потянуть слишком большой битовый массив”, когда Размер дисплея Android N установил больше, чем Маленький

У меня есть опубликованное приложение, которое отказывает при запуске на Android N когда недавно представленный Display size Установка OS установлена на слишком большое значение.

Когда я смотрю в 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 заставляет Ваше устройство вести себя как физически устройство меньшего размера с более высокой плотностью пикселей. Но я не понимаю то, что я, как предполагается, делаю здесь. Если я вставил прогрессивно меньшие изображения для прогрессивно более высоких разрешений, это не будет выглядеть хорошим на на самом деле больших дисплеях. Или разве я не понимаю что-то?

Любые указатели значительно ценились бы.

62
задан 24 August 2016 в 01:26

8 ответов

я мой случай, перемещая битовый массив всплеска (с высокой разрешающей способностью) от drawable к drawable-xxhdpi был решением.

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

экран-заставка в моем случае имеет xxhdpi разрешение, и это было по ошибке помещено в папка drawable , вместо drawable-xxhdpi. Это заставило Android предположить, что экран-заставка имел mdpi разрешение, и масштабируйте изображение к 3*3 разам, это потребовало размера и пытающийся создать битовый массив.

134
ответ дан 31 October 2019 в 13:26

Я не знаю, был бы он помогать кому-то, но я просто оставлю его здесь. В моем случае - проблема была только на устройствах Sumsung с Android 7, и проблема была в пропорциях экрана-заставки. после изменяющейся высоты к 1 024 пкс - все хорошо работает

11
ответ дан 31 October 2019 в 13:26

Переместите свое изображение в drawable для множественного отображения. Ваше изображение находится в растровом формате, таким образом, необходимо вставить изображение, множественно отображают папку, затем это будет работать

9
ответ дан 31 October 2019 в 13:26

В моем случае я решил проблему после добавления android:hardwareAccelerated="false" в applicationg из файла манифеста.

6
ответ дан 31 October 2019 в 13:26

Попытайтесь использовать Битовый массив. Класс фабрики, эта ссылка поможет Вам Загружающиеся Большие Битовые массивы Эффективно

3
ответ дан 31 October 2019 в 13:26

Файлы значков являются слишком большими для Android к эффективно и гладко загружаются. Android распознает это со своими умными алгоритмами.

можно изменить размер файлов значков с помощью Заключительный Android Resizer asystat. Измените размер их к "xhdpi" или ниже.

Место измененные фотографии в drawable или перезаписи по существующим большим файлам значков.

Затем Вы сделаны.

0
ответ дан 31 October 2019 в 13:26

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

0
ответ дан 31 October 2019 в 13:26

В моем случае я просто изменил холст изображения, которое используется в фоновом режиме с помощью Paint3d (или можно использовать любого другого). Здесь я совместно использую снимок экрана, просто проходят его.

0
ответ дан 31 October 2019 в 13:26

Другие вопросы по тегам:

Похожие вопросы: