2012-04-21 12 views
5

Ho un'immagine di sfondo che è diviso in tre immagini separate:App Android Sfondo: l'utilizzo di più immagini

backgroundTop.png 
backgroundMiddle.png 
backgroundBottom.png 

Come potrei fare per l'attuazione di un background in un app Android in cui viene visualizzata l'immagine in alto a parte superiore dell'applicazione e l'immagine in basso nella parte inferiore e l'immagine centrale è affiancata? Ciò dipenderebbe naturalmente dalla quantità di contenuto caricata sullo schermo, proprio come nelle pagine web.

In altre parole, il numero totale di volte in cui l'immagine centrale viene affiancata dipenderà da ciò che appare sullo schermo.

ho visto una soluzione per implementare uno sfondo piastrelle di una singola immagine qui: How to make android app's background image repeat

Questo funziona bene se si sta utilizzando una singola immagine, ma non con immagini multiple.

collegamenti a esempi di seguito in modo da sapere cosa voglio dire:

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

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

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

risposta

9

pensa che si può provare a combinare layer list drawable (è possibile impostare inserti per strati) con un drawable bitmap piastrellabile posizionato come livello intermedio e posizionato con insiemi appropriati.

Qualcosa di simile a questo:

<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> 

Ma tutto dipende dal layout davvero.

+0

bello, mi piace questo se lavori. – Blundell

+0

Ero alla ricerca di una soluzione per un problema diverso e anche la tua risposta mi ha aiutato. Usare una lista dei livelli è una buona idea in molti scenari, grazie per la condivisione! – Stan

0

provare qualcosa di simile:

superiore ed inferiore in due layout con android:gravity="TOP" e "BOTTOM". Questi due layout sono configurati con android:background="@drawable/xxx.png"

Per il centro, utilizzare la soluzione o utilizzare una ScrollView.

1

Impostare lo sfondo come immagine centrale e affiancarlo. (come nell'esempio che mostri)

Crea una vista di intestazione che inserisci nella parte superiore di ogni pagina.

Creare una vista di piè di pagina che si inserisce nella parte inferiore di ciascuna pagina.

E avere i tuoi contenuti nel mezzo.

L'ho creato un file flat qui, ma puoi facilmente immaginare il refactoring in includes o qualsiasi altra esigenza dell'applicazione.

<?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> 
  • Rosso = Header
  • Verde = Tiles (che sarebbe stato ereditato dal vostro tema)
  • Blu = Footer

enter image description here

+0

Funziona quasi. Il problema è che le parti rosse e blu sono semplicemente "in cima" allo sfondo verde. Non si fondono insieme come previsto, è possibile vedere chiaramente che ci sono due immagini sopra l'immagine di sfondo. Esempio: http://peecee.dk/uploads/042012/device-2012-04-21-174830_big_thumb.png –

+0

Ah ma poi diventa un problema con le tue risorse. Se si esegue il catching dell'intestazione e del piè di pagina per definire le aree estensibili e affiancare la parte centrale alle dimensioni corrette della piastrella, è necessario integrarle perfettamente. ** ** teoricamente – Blundell

Problemi correlati