Comment convertir Drawable en int et vice-versa dans Android
Je veux convertir Drawable en int puis vice-versa.Fondamentalement, je veux enregistrer Arraylist objet dans sharedPrefrence. Dans ce but que j'ai en Œuvre Gson à Srtring la conversion de la Méthode. Si j'utilise ici Drawable au lieu de int puis Gson de la Chaîne de conversion de prendre beaucoup de temps. si je veux utiliser un int au lieu de Drawable.
private List<AppInfo> apps = null;
public void setIcon(int icon) {
this.icon = icon;
}
apps.get(position).setIcon(mContext.getResources().getDrawable(apps.get(position).getIcon()));
Où AppInfo ici est
public AppInfo(String appname, String pname, String versionName, int versionCode, int icon, int color) {
this.appname = appname;
this.pname = pname;
this.versionName = versionName;
this.versionCode = versionCode;
this.icon = icon;
this.color = color;
}
Ici est la source de la Conversion de l'ArrayList de l'objet Personnalisé en Chaîne afin que je puisse l'enregistrer sur SharedPrefrence.
Gson gson = new Gson();
apps.get(number).setColor(picker.getColor());
String JsonAppsdata = gson.toJson(apps);
System.out.println("Storing="+JsonAppsdata);
utility.StoreData(getApplicationContext(), JsonAppsdata);
Avez-vous toutes les icônes de vos ressources? Ou êtes-vous de les télécharger à partir du serveur?
Et comment voulez-vous remplir la Liste<AppInfo> apps?
Première fois que je le remplir de la res/drawable puis après cela si quelques un (utilisateur) que vous voulez modifier l'icône avec quelqu'un dans le système de l'icône de l'application puis j'ai besoin de pour obtenir d'installation de système d'icône de l'application. Bref, une fois que j'ai besoin pour obtenir à partir res/drawable et quelques fois j'ai besoin d'obtenir les icônes de l'application d'installation de l'icône du système, par ce mContext.getPackageManager().getApplicationIcon(apps.get(position).getPname())
Donc, ce qui vous empêche de garder ce mContext.getPackageManager().getApplicationIcon() int dans votre AppInfo?
Je ne peux pas utiliser Drawable dans AppInfo, j'ai utilisé ici int au lieu de Drawable en raison d'un cas que j'ai évoqués ci-dessus. Maintenant, j'ai besoin de le convertir en int.
Et comment voulez-vous remplir la Liste<AppInfo> apps?
Première fois que je le remplir de la res/drawable puis après cela si quelques un (utilisateur) que vous voulez modifier l'icône avec quelqu'un dans le système de l'icône de l'application puis j'ai besoin de pour obtenir d'installation de système d'icône de l'application. Bref, une fois que j'ai besoin pour obtenir à partir res/drawable et quelques fois j'ai besoin d'obtenir les icônes de l'application d'installation de l'icône du système, par ce mContext.getPackageManager().getApplicationIcon(apps.get(position).getPname())
Donc, ce qui vous empêche de garder ce mContext.getPackageManager().getApplicationIcon() int dans votre AppInfo?
Je ne peux pas utiliser Drawable dans AppInfo, j'ai utilisé ici int au lieu de Drawable en raison d'un cas que j'ai évoqués ci-dessus. Maintenant, j'ai besoin de le convertir en int.
OriginalL'auteur M.ArslanKhan | 2015-12-27
Vous devez vous connecter pour publier un commentaire.
Int -> Drawable:
Drawable icon = getResources().getDrawable(42, getTheme());
Drawable -> Int:
(Je suppose, que vous êtes le remplissage de
List<AppInfo> apps
de l'app dont les icônes sont déjà enres/drawable
dossier de votre application)Une fois que vous définissez votre
R.drawable.app1
àImageView
, vous pouvez aussi lui donner untag
à identifier la ressource dans leImageView
plus tard:Si vos icônes sont à venir à partir du serveur - le seul moyen est pour les stocker sur le disque et puis re-charger. (ou, mieux, de s'appuyer sur l'existant de l'image-solutions de mise en cache comme picasso)
UPD:
Il n'y a pas de moyen direct de conversion
Drawable
enint
, mais dans ce cas particulier, il est possible d'obtenir laint
, au lieu deDrawable
dePackageManager
:Drawable icon = getResources().getDrawable(apps.get(i).getIcon()); ImageView imageView = (ImageView) rootView.findViewById(imageArray[i]); imageView.setImageDrawable(icon);
Comment puis-je faire la même chose pour un drawableLeft? Je suis en utilisant drawableLeft avec un TextView et récupérer les valeurs à l'aide de getCompoundDrawables méthode. Alors, comment puis-je convertir un int.
OriginalL'auteur Konstantin Loginov
C'est de cette façon que nous pouvons chercher de l'icône de l'application pour une imageview.
OriginalL'auteur Lins Louis