Jump to content

écraser un drawable par un nouveau dans les ressources


Olivier69

Recommended Posts

Bonjour,

J'ai fait un widget mais j'aimerais que l'utilisateur puisse changer de thème à volonté. Alors je me suis dit que le mieux était de remplacer les drawables dans les ressources par des images stockées en mémoire (sdcard). Je sais qu'on peut transformer une bitmap en drawable, mais je ne sais pas comment remplacer l'ancienne drawable que je veux remplacer. J'imagine un truc avec inputStream et outputStream mais il me faudrait aussi une Uri. Si qqun à une idée, je l'en remercierais de la partager!

Link to comment
Share on other sites

lol....c'est la mode....

bon blague à part c'est simple: ne fais pas ton widget en dur dans le xml.

laisse les images vides, et remplit les dans le code :

updateViews.setImageViewUri(R.id.tonimage, Uri.parse("/sdcard/Tonimage.png"));

Link to comment
Share on other sites

  • 2 weeks later...

J'ai mis un peut de temps à répondre! pardon! Oui j'ai envisagé cette possibilité mais il y a deux problèmes.

1) on ne peut changer la background de cette façon...

2)si carte sd est cours de lecture sur l'ordi ou retirée, ça va aboutir a un plantage lors du rafraichissement...

c'est ces deux points qui m'intéressent.

Link to comment
Share on other sites

1) on ne peut changer la background de cette façon...

Il existe une propriété "maImageView.setBackgroundDrawable(monDrawable)" qui te permettra de changer facilement les fonds. C'est ce que j'utilise et cela ne m'a jamais posé de soucis.

2)si carte sd est cours de lecture sur l'ordi ou retirée, ça va aboutir a un plantage lors du rafraichissement...

c'est ces deux points qui m'intéressent.

Effectivement, on peut voir cela dans les widget "pure" de koxx, freedhome, et plein d'autres applis dont les miennes, il n'aime pas vraiment qu'on retire la carte SD.

Je suis en train de plancher sur la sauvegarde des images dans une base de données sqlite ( sous forme de blob) pour ne plus avoir de soucis. Je mettrai le code une fois que j'y serai arrivé. J'en avais déjà parlé il y a treeess longtemps: https://forum.frandroid.com/forum/viewtopic.php?id=5850

Link to comment
Share on other sites

Je crois que j'ai pas trop compris.

ImageView i=new ImageView(context);
           i.setBackgroundResource(R.drawable.eph_background);

si ici je cré un nouveau background, comment je l'applique ensuite à ma view?

Parce que là, il se passe rien... (Je précise que je suis sur un appWidget, et que je ne peux pas utiliser les méthodes dans View.)

Link to comment
Share on other sites

  • 3 months later...

Bonsoir,

Je me permet de reprendre se post car j'essai justement de changer dynamiquement le background du linearLayout de mon widget mais je ne sais pas comment mis prendre.

Certe il y a la methode setBackgroundDrawable qui réalise se que je veux (en théorie) mais je ne sais pas comment récupéré mon linearLayout pour lui appliquer.

Pour les acitivity il y a le findviewbyid mais cette methode n'existe pas pour les widget :(

Merci pour votre aide, je suis débutant et n'ai pas encore tous les concepts.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...