77 votes

comment ajouter une image de fond à une activité ?

En utilisant le thème ou ImageView ?

133voto

Sephy Points 18893

Utiliser le android:background dans votre fichier xml. Le plus simple, si vous voulez l'appliquer à une activité entière, est de le mettre dans la racine de votre disposition. Donc, si vous avez un RelativeLayout au début de votre fichier xml, mettez-le ici :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rootRL"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:background="@drawable/background">
</RelativeLayout>

7 votes

Cela peut, malheureusement, causer quelques problèmes... bien sûr, cela fonctionnera pour votre activité principale, mais si vous ouvrez une nouvelle activité avec le même Android:background="@drawable/background", dès que vous faites pivoter l'émulateur dans la plupart des cas, et sur certains appareils, vous vous planterez avec une erreur "Out of Memory..." si votre bgImg est une haute résolution. @Sephy, comment géreriez-vous ce problème ?

14voto

Paresh Mayani Points 48123

Vous pouvez définir l'"image d'arrière-plan" d'une activité en définissant les paramètres suivants android:background Les attributs xml sont les suivants :

(Ici, par exemple, prendre un LinearLayout pour une activité et définir une image de fond pour le layout (c'est-à-dire indirectement pour une activité))

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01" 
              android:layout_width="fill_parent" 
              android:layout_height="fill_parent" 
              xmlns:android="http://schemas.android.com/apk/res/android"
              android:background="@drawable/icon">
 </LinearLayout>

1 votes

J'ai remarqué que cela fonctionne bien pour un LinearLayout, mais pour les RelativeLayouts, j'obtiens des erreurs OOM. J'ai lu de nombreux articles sur decodeBitmap ou layout.invalidate(), ou Bitmap.recycle, etc... Comment faire persister une image comme arrière-plan de l'application en utilisant RelativeLayouts ? Devrais-je mettre en cache toute image qui apparaîtra dans plus d'une activité ? Quelle est la meilleure pratique ?

2voto

Sunil Kumar Points 11

Nous pouvons facilement placer l'image de fond dans PercentFrameLayout en utilisant l'ImageView. Nous devons définir l'attribut scaleType value="fitXY" et au premier plan, nous pouvons également afficher d'autres vues comme une vue de texte ou un bouton.

 <android.support.percent.PercentFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        >
        <ImageView
            android:src="@drawable/logo"
            android:id="@+id/im1"
            android:scaleType="fitXY"
            android:layout_height="match_parent"
            android:layout_width="match_parent"/>
<EditText android:layout_gravity="center_horizontal"
        android:hint="Enter Username"
        android:id="@+id/et1"
        android:layout_height="wrap_content"
        app:layout_widthPercent="50%"
        app:layout_marginTopPercent="30%"
        />
<Button
    android:layout_gravity="center_horizontal"
    android:text="Login"
    android:id="@+id/b1"
    android:layout_height="wrap_content"
    app:layout_widthPercent="50%"
    app:layout_marginTopPercent="40%"/>
</android.support.percent.PercentFrameLayout>

2voto

Jesvin Points 73

Placez l'image dans le dossier drawable. Le dossier drawable est en res. drawable a 5 variantes drawable-hdpi drawable-ldpi drawable-mdpi drawable-xhdpi drawable-xxhdpi

0 votes

Quel dossier devons-nous utiliser ? Jesvin

1voto

Elenasys Points 23268

De nos jours, nous devons utiliser match_parent :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="@drawable/background">
</RelativeLayout>

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X