Android Drawable управления памятью - PullRequest
0 голосов
/ 03 июля 2018

Я реализовал RecyclerView в одном из моих занятий. Я использую настроенный адаптер RecyclerView для загрузки данных из базы данных SQLite (используя Room и LiveData-структуру) и отображаю их в виде.

Все строки имеют большой ImageView, где я хочу показать Drawable (просто .png). Для этого я сначала попытался использовать подход, написанный на официальном сайте разработчиков Android 1004 *, но он мне не помог. Поэтому я пытаюсь использовать Glide в качестве библиотеки, рекомендованной Google.

У меня 16 проектов в моем проекте. Все они имеют масштаб от 800х800 до 1920х1080 пикселей.

В моем адаптере я загружаю данные из своей базы данных и на основе идентификатора рисования, а также изображения (поэтому в базе данных не хранятся данные изображений; я делал это ранее).

К сожалению, мое приложение не может обработать такой объем кэша изображений, что приводит к исключению OutOfMemoryError . Вот почему я использовал

 android:largeHeap = "true"

в моем манифесте Android.

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

В Glide я использую

 GlideApp
          .load(R.drawable.my_drawable)
          .fitcenter()
          .into(myImageView);

Но, к сожалению, изображение не уменьшается и не уменьшается. Я думал, что Glide может масштабировать изображение в зависимости от размера ImageView, размера экрана и так далее.

Что я делаю не так? Есть ли лучший способ использовать меньше памяти без фиксированного масштабирования, чтобы мои картинки не становились безобразными?

EDIT: Сначала я сохранил свои изображения в основной папке «drawable» в структуре моего проекта (скопируйте и вставьте) Мой второй подход - это gimp-android-xdpi addon , который экспортирует изображения или значки для любой плотности Android (mdpi, hdpi, xhdpi и т. Д.). Но и это не помогло.

1 Ответ

0 голосов
/ 03 июля 2018

переопределение вызова (horizontalSize, verticalSize).

Это изменит размер изображения перед его отображением в ImageView.

...