Я реализовал 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 и т. Д.). Но и это не помогло.