Android : Définir un fond d’écran
|Voici le premier article de la toute nouvelle catégorie que j’ai nommée Android. Dans cette catégorie vous trouverez des astuces, des conseils et des tutoriaux sur le sujet des applications mobiles dans le monde de Google.
Passons maintenant au contenu de cet article qui se découpera en trois parties :
- Background sur une Activité
- Background sur une application
- Résolution du problème avec une ListView
Et oui, une fois que nous auront défini le background nous nous rendrons compte d’un soucis sur les ListView.
Background sur une Activité
Pour ajouter un fond sur une Activité c’est très simple :
- Rendez-vous dans le fichier ressource (exemple : /res/layout/main.xml) de votre Activité.
- Renseignez l’attribut android:background du layout principal
Deux exemples :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/grunge" > <!-- ... --> </LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FF555555" > <!-- ... --> </LinearLayout>
Background sur une application
Pour définir un background sur l’ensemble de l’application nous allons commencer par créer un thème perso.
Créons donc la ressource de styles : /res/values/styles.xml et remplissez le de la façon suivante :
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MonSuperTheme" parent="@android:style/Theme.NoTitleBar"> <item name="android:windowBackground">@drawable/grunge</item> </style> </resources>
Ici l’exemple est très simple, nous créons un thème nommé MonSuperTheme qui va hériter du thème Theme.NoTitleBar (qui est un thème de base d’Android) puis nous indiquons que la valeur windowBackground (le fond de l’application) prendra une ressource.
Maintenant appliquons ce thème à notre application, ouvrez donc votre manifest. Et dans la balise <application>, rajoutez un attribut android:theme :
android:theme="@style/MonSuperTheme"
Le tour est joué, nous avons notre fond d’application bien défini.
Résolution du problème avec une ListView
Il existe une solution pour que la ListView s’affiche correctement. En fait, le problème vient du fait que la ListView est optimisée pour un rendu rapide lors du défilement et n’est donc pas configuré (de base) pour réagir comme vous l’auriez souhaité dans cette situation.
Il suffit tout simplement de une couleur comme transparente android:cacheColorHint :
<ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:cacheColorHint="#00000000"/>







novembre 23rd, 2010 on 19h38
Bonjour,
J’essaie de mettre un fond d’écran pour une application que je développe mais j’ai un problème quand je rajoute dans mon main.xml après le premier LinearLayout le paragraphe resources que tu as utilisé, l’application ne fonctionne plus. Et sinon je ne sais pas où je dois définir mon fond d’écran. Finalement, je n’ai pas de dossier drawable, mais j’ai 3 dossiers drawable-hdpi, drawable-ldpi et -mdpi. Donc je ne sais pas si il y a un rapport avec ceci ou pas. Merci de me répondre le plus vite possible.
PS: je suis débutant.
novembre 26th, 2010 on 17h58
Bonjour,
Est-ce que tu pourrais préciser ce qui se passe quand tu dis « l’application ne fonctionne plus ».
- Tu as sûrement un message d’erreur
- As-tu pensé à regarder le log ?
Pour ce qui concerne les dossiers drawable-xxxx c’est par ce qu’on ton application peut fonctionner sous différentes tailles d’écran.
Ça te permet d’utiliser des drawables différents suivant la taille d’écran. (Utile quand tu veux une image qui prends 50% de l’écran par exemple)