Comment obtenir Android ID de ressource de créé dynamiquement (en Java) couche-liste / LayerDrawable?
La "solution n ° 2 (dynamique)" dans cette question/réponse post:
la superposition de deux images dans android pour définir une imageview
est très proche de ce que je veux faire, c'est de créer dynamiquement une couche de liste (pour une barre d'état icône de notification, je veux construire mon icône en couches), mais l'icône de la cession dans l'API de notification nécessite un ID de ressource (qui, je tiens à appeler à partir d'un service).
Je ne figure-comment construire un construire, de façon dynamique une couche-liste sans la construction de centaines de couche-liste .les fichiers xml (pour les différentes combinaisons d'icônes que je voudrais être en mesure de l'afficher). Daniel "solution #1" fonctionne à merveille pour le statique .des fichiers xml, mais je suis à la recherche d'une plus élégant, dynamique de la solution.
Dans le post ci-dessus, l'extrait de code:
Resources r = getResources();
Drawable[] layers = new Drawable[2];
layers[0] = r.getDrawable(R.drawable.t);
layers[1] = r.getDrawable(R.drawable.tt);
LayerDrawable layerDrawable = new LayerDrawable(layers);
semble être ce que je veux, mais je ne sais pas ou comprendre comment "attribuer" la nouvelle layerDrawable à mon icône de notification (qui prend un ID de ressource).
Merci à tous...stackoverflow est une ressource merveilleuse!
OriginalL'auteur scary alien | 2011-04-12
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas une telle chose comme un ID pour un Drawable créé lors de l'exécution. Ces Identifiants reportez-vous à int champs de la classe R, créés automatiquement à partir des fichiers xml.
Depuis le LayerDrawable constructeur nécessite juste un Drawable tableau, vous pouvez fournir un drawable ceux fabriqués à partir de n'importe quelle méthode. Un exemple, la méthode statique
Drawable.createFromStream(InputStream is, String srcName)
.http://developer.android.com/reference/android/graphics/drawable/Drawable.html#createFromStream%28java.io.InputStream,%20java.lang.String%29
Je crois que les ressources sont le seul moyen de faire référence à des icônes de notification. Vous devriez seulement besoin d'ajouter une icône par densité de l'écran.
OriginalL'auteur Aleadam
Utiliser "getIdentifier" pour l'obtenir.Supposons que j'ai un fichier de bug.png dans le "/res/drawable/", donc, je reçois son ResourceID avec le code suivant:
//ou
référence:
anddev.org
OriginalL'auteur hasanghaforian