jeudi 28 novembre 2013

Les Images 9-Patch

Pour plus d'informations sur les images 9-Patch, cet article m'a bien aidé :

http://blog.ace-art.fr/2010/10/14/tutoriel-android-partie-12-le-9-patch/

Java : transformer un tableau en Vector

Bonjour,

La classe Arrays contient plusieurs méthodes utilitaires pour travailler avec les tableaux ( trier, copier une partie d'un tableau dans un autre, etc ) . La méthode asList est intéressante car elle permet de transformer un tableau en un objet List :

String [] tab = {"un", "deux", "trois" };
List liste = Arrays.asList(tab);

On peut transformer une List en Vector à l'aide d'un constructeur :

Vector v = new Vector ( liste );


lundi 11 novembre 2013

Android - récupérer les images contenues dans un widget ImageView

Bonjour,

Lors d'un exercice de l'annexe 2 , nous avions à modifier l'élément drawable à l'intérieur d'un widget ImageView. Certains d'entre vous ont demandé comment récupérer l'image présente dans le ImageView. Voici le résultat de mes recherches.

Drawable d = image.getDrawable();

Cette ligne nous permet de récupérer l'objet Drawable associé à un ImageView ( ici appelé image ).

Drawable stromae = getResources().getDrawable(R.drawable.stromae);
Drawable reflektor = getResources().getDrawable(R.drawable.reflektor);

Ces deux lignes, dans le contexte de l'exercice, retournent des objets Drawable correspondant aux deux images utilisées. Ensuite, on pourra comparer le Drawable présent dans l'ImageView avec ces deux Drawables avec la méthode equals...


if ( d.equals(stromae))

CA NE FONCTIONNE PAS...parce que la méthode equals n'est pas redéfinie pour la classe Drawable...( voir cours B33 )



On est dans un cul-de-sac à moins de réaliser une sous-classe de la classe Drawable et d'y redéfinir la méthode equals, un peu long...

L'autre approche est d'utiliser les Tags. Un tag peut être associé à un widget ( n'importe quel objet dont la superclasse est View ) afin d'ajouter de l'information sur ce widget. On peut l'utiliser à la fois dans le XML ( propriété android:tag ) ou dans le code java ( getTag, setTag )

On associe donc un tag à notre ImageView :


        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:src="@drawable/stromae"
        android:layout_weight="0.67"
        android:tag="stromae" />

et on travaille dans notre .java :

if ( image.getTag().equals("stromae"))
{
image.setImageResource(R.drawable.reflektor);
image.setTag("reflektor");
}
else
{
image.setImageResource(R.drawable.stromae);
image.setTag("stromae");
}


Merci à Louis D. pour la curiosité,