2012-04-21 7 views
5

ich ein Hintergrundbild, die in drei separate Bilder aufgeteilt ist:Android App Hintergrund: Verwendung mehrerer Bilder

backgroundTop.png 
backgroundMiddle.png 
backgroundBottom.png 

Wie würde ich mich über einen Hintergrund in einer Android-App der Umsetzung, in der das obere Bild auf der angezeigt wird oben in der Anwendung und dem unteren Bild an der Unterseite, und das mittlere Bild ist gefliest dazwischen? Dies hängt natürlich davon ab, wie viel Inhalt auf dem Bildschirm geladen wird - ähnlich wie auf Webseiten.

Mit anderen Worten, die Gesamtzahl der für das mittlere Bild gekachelt wird davon abhängen, was auf dem Bildschirm ist.

Ich habe eine Lösung gesehen hier eine Pflasterung Hintergrund aus einem einzigen Bild zu implementieren: How to make android app's background image repeat

Dies funktioniert gut, wenn Sie ein einzelnes Bild verwenden, aber nicht mit mehreren Bildern.

Links zu folgenden Beispiele damit Sie wissen, was ich meine:

http://rockfreaks.net/images/reviewPageTop.png

http://rockfreaks.net/images/reviewPageMiddle.png

http://rockfreaks.net/images/reviewPageBottom.png

Antwort

9

Denken Sie versuchen layer list drawable die Kombination von (es ist möglich, Einsätze für Schichten eingestellt) mit eine gekachelte Bitmap, die als mittlere Ebene platziert und mit entsprechenden Einfügungen positioniert werden kann.

Etwas wie folgt aus:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/page_top" /> 
    <item 
    android:insetTop="@dimen/page_top_height" 
    android:insetBottom="@dimen/page_bottom_height" 
    > 
    <bitmap 
     android:src="@drawable/page_middle_tile" 
     android:tileMode="repeat" 
     /> 
    </item> 
    <item android:drawable="@drawable/page_bottom" /> 
</layer-list> 

Aber es hängt alles in der Tat auf der Anlage.

+0

Nizza, ich mag das, wenn es funktioniert. – Blundell

+0

Ich suchte nach einer Lösung für ein anderes Problem, und Sie haben mir auch geholfen. Die Verwendung einer Ebenenliste ist in vielen Szenarien eine gute Idee, danke fürs Teilen! – Stan

0

versuchen, etwas wie folgt aus:

oben und unten in zwei Layouts mit android:gravity="TOP" und "BOTTOM". Diese beiden Layouts eingerichtet sind, mit android:background="@drawable/xxx.png"

für das Zentrum, entweder Ihre Lösung oder vielleicht eine Scrollview verwenden.

1

Stellen Sie den Hintergrund als mittleres Bild und Fliesen es. (wie in dem Beispiel, das Sie anzeigen)

Erstellen Sie eine Kopfzeile, die Sie am Anfang jeder Seite einfügen.

eine Fußzeile Ansicht erstellen, die Sie am Ende jeder Seite einfügen.

Und haben Sie Ihre Inhalte in der Mitte.

Ich habe es sich um eine flache Datei hier gemacht, aber man kann sich leicht vorstellen, es in includes Refactoring, oder was auch immer Ihre Anwendung benötigt.

<?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:background="#00FF00" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="100dip" 
     android:layout_alignParentTop="true" 
     android:background="#FF0000" /> 

    <!-- Your content --> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="100dip" 
     android:layout_alignParentBottom="true" 
     android:background="#0000FF" /> 

</RelativeLayout> 
  • Rot = Kopf
  • Grün = Fliesen (die von Ihrem Thema vererbt werden würde)
  • Blau = Footer

enter image description here

+0

Das funktioniert fast. Das Problem ist, dass die roten und blauen Teile nur "oben" auf dem grünen Hintergrund sind. Es fügt sich nicht wie beabsichtigt zusammen, Sie können deutlich sehen, dass sich zwei Bilder über dem Hintergrundbild befinden. Beispiel: http://peecee.dk/uploads/042012/device-2012-04-21-174830_big_thumb.png –

+0

Ah, aber dann wird es ein Problem mit Ihren Ressourcen. Wenn Sie die Kopf- und Fußzeile zum Definieren der dehnbaren Bereiche und zum Kacheln der Mitte in der richtigen Kachelgröße verwenden, sollten Sie sie nahtlos integrieren. **theoretisch** – Blundell