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 :

  1. Background sur une Activité
  2. Background sur une application
  3. 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 :

  1. Rendez-vous dans le fichier ressource (exemple : /res/layout/main.xml) de votre Activité.
  2. 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.

Un thème permet de définir des règles pour tous les éléments d’un même type. Par exemple, si vous voulez que tous vos champs de saisie soient rédigés en rouge ce sera à travers un thème qu’il faudra définir cette règle.

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

Si vous avez essayé de mettre une ListView et un fond sur votre application, vous avez sûrement remarqué un soucis d’affichage lors du défilement de la liste. Si vous n’avez pas encore essayé, je vous conseille de le faire pour découvrir la chose.

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"/>
Tagués avec : , , , , , , , ,
Publié dans Android
2 commentaires pour “Android : Définir un fond d’écran
  1. Bachar dit :

    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.

  2. Olivier PEREZ dit :

    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)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*