Как преобразовать Drawable в int и наоборот в Android
Я хочу преобразовать Drawable в int , а затем наоборот. Обычно я хочу сохранить объект Arraylist в sharedPrefrence . Для этой цели у меня есть реализация метода преобразования Gson в Srtring. Если я использую здесь Drawable вместо int , тогда преобразование Gson String займет много времени. поэтому я хочу использовать int вместо Drawable.
Где AppInfo здесь
Вот источник преобразования ArrayList пользовательского объекта в String, чтобы я мог сохранить его в SharedPrefrence.
3 ответа
Int -> Drawable:
Drawable icon = getResources().getDrawable(42, getTheme());
Возможность рисования — & gt; Int:
Установив для R.drawable.app1 значение ImageView , вы также можете присвоить ему tag , чтобы позже идентифицировать ресурс в ImageView :
Если ваши значки поступают с сервера, единственный способ — это сохранить их на диск, а затем повторно -загрузите их. (или, что лучше, положитесь на уже существующие решения для кэширования изображений, такие как picasso)
UPD: Нет прямого способа преобразовать Drawable в int , но в этом конкретном случае можно получить int вместо Drawable из PackageManager :
Единственное решение, которое сработало для меня, было в чате @KonstantinLoginov , но вместо использования:
val drawable = context.getPackageManager().getApplicationIcon(applicationInfo) ,
Я передал в packageName:
val drawable = context.getPackageManager().getApplicationIcon(packageName) , который является строкой и может быть легко передан.
Вот как мы можем получить значок приложения и установить его для просмотра изображения.
Источник