Wie füge ich der Aktivität ein Hintergrundbild hinzu?

77

Verwenden Sie Theme oder ImageView?

Vladimir Berezkin
quelle

Antworten:

127

Verwenden Sie das android:backgroundAttribut in Ihrer XML. Der einfachste Weg, wenn Sie es auf eine ganze Aktivität anwenden möchten, besteht darin, es im Stammverzeichnis Ihres Layouts abzulegen. Wenn Sie also ein RelativeLayout als Start Ihrer XML-Datei haben, geben Sie es hier ein:

<?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>
Sephy
quelle
7
Dies kann leider einige Probleme verursachen ... sicher, dass es für Ihre Hauptaktivität funktioniert, aber wenn Sie eine neue Aktivität mit demselben Android öffnen: background = "@ drawable / background", sobald Sie den Emulator in den meisten Fällen drehen In einigen Fällen und bei einigen Geräten stürzt der Fehler "Out of Memory .." ab, wenn Ihr bgImg eine hohe Auflösung aufweist. @Sephy, wie würden Sie mit diesem Problem umgehen?
Whyoz
14

Sie können das "Hintergrundbild" auf eine Aktivität android:backgroundfestlegen, indem Sie die folgenden XML-Attribute festlegen :

(Nehmen Sie hier beispielsweise ein LinearLayout für eine Aktivität und legen Sie ein Hintergrundbild für das Layout fest (dh indirekt für eine Aktivität).)

<?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>
Paresh Mayani
quelle
1
Ich habe festgestellt, dass dies für ein LinearLayout gut funktioniert, aber für RelativeLayouts werden OOM-Fehler angezeigt. Ich habe viele decodeBitmap-Posts oder layout.invalidate () -Postings oder Bitmap.recycle-Posts usw. gelesen. Wie würden Sie ein Bild als Hintergrund der App mit RelativeLayouts beibehalten? Sollte ich ein Bild zwischenspeichern, das in mehr als einer Aktivität angezeigt wird? Was ist die beste Vorgehensweise?
Whyoz
2

Legen Sie das Bild in den Ordner zum Zeichnen. Zeichnungsordner ist in res. Drawable haben 5 Varianten Drawable-HDPI Drawable-LDPI Drawable-MDPI Drawable-XHDPI Drawable-xxhdpi

Jesvin
quelle
Welchen Ordner müssen wir verwenden? @ Jesus
jdyg
1

Heutzutage müssen wir verwenden 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>

Geben Sie hier die Bildbeschreibung ein

Jorgesys
quelle
1

Mit der ImageView können wir das Hintergrundbild einfach in PercentFrameLayout platzieren. Wir müssen das scaleType-Attribut value = "fitXY" setzen und im Vordergrund können wir auch andere Ansichten wie Textansicht oder Schaltfläche anzeigen.

 <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>
Sunil Kumar
quelle
0

und vergessen Sie nicht, Ihr Projekt zu bereinigen, nachdem Sie diese Zeilen geschrieben haben. Sie erhalten eine Fehlermeldung in Ihrer XML-Datei, bis Sie Ihr Projekt in Eclipse bereinigt haben: Projekt-> Bereinigen ...

Sebastian Walla
quelle