2012-04-21 11 views
5

tengo una imagen de fondo que se divide en tres imágenes separadas:Android App Antecedentes: el uso de múltiples imágenes

backgroundTop.png 
backgroundMiddle.png 
backgroundBottom.png 

¿Cómo hago para la implementación de un fondo en una aplicación para Android en la que se muestra la imagen superior en la parte parte superior de la aplicación, y la imagen inferior en la parte inferior, y la imagen del medio está en mosaico en el medio? Esto, por supuesto, dependerá de la cantidad de contenido cargado en la pantalla, al igual que en las páginas web.

En otras palabras, la cantidad total de veces que la imagen del medio está en mosaico dependerá de lo que aparezca en la pantalla.

que he visto una solución para implementar un fondo de mosaico de una sola imagen aquí: How to make android app's background image repeat

Esto funciona bien si está utilizando una sola imagen, pero no con varias imágenes.

Enlaces a ejemplos a continuación para que sepa lo que quiero decir:

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

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

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

Respuesta

9

creo que se pueda probar la combinación de layer list drawable (es posible establecer inserciones de capas) con un mapa de bits embaldosado dibujable que se coloca como una capa intermedia y se coloca con las inserciones apropiadas.

Algo como esto:

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

Pero todo depende de su diseño hecho.

+0

bonito, me gusta esto si trabajos. – Blundell

+0

Estaba buscando una solución para un problema diferente, y tu respuesta también me ayudó. Usar una lista de capas es una buena idea en muchos escenarios, ¡gracias por compartir! – Stan

0

intentar algo como esto:

superior e inferior en dos diseños con android:gravity="TOP" y "BOTTOM". Estos dos diseños están configurados con android:background="@drawable/xxx.png"

Para el centro, utilice su solución o utilice ScrollView.

1

Establezca el fondo como la imagen del medio y márquelo. (como en el ejemplo que muestra)

Cree una vista de encabezado que inserte en la parte superior de cada página.

Cree una vista de pie de página que inserte en la parte inferior de cada página.

Y tenga su contenido en el medio.

He hecho un archivo plano aquí, pero puede imaginar fácilmente refactorizarlo en includes, o lo que necesite su aplicación.

<?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> 
  • Rojo = Cabecera
  • Verde = Azulejos (que se hereda del tema)
  • Azul = pie de página

enter image description here

+0

Esto casi funciona. El problema es que las partes roja y azul son simplemente 'en la parte superior' del fondo verde. No se fusiona como se pretendía, se puede ver claramente que hay dos imágenes en la parte superior de la imagen de fondo. Ejemplo: http://peecee.dk/uploads/042012/device-2012-04-21-174830_big_thumb.png –

+0

Ah, pero luego se convierte en un problema con sus recursos. Si alinea el encabezado y el pie de página para definir las áreas extensibles y coloca el centro en el tamaño correcto, debe lograr que se integren sin problemas. ** teóricamente ** – Blundell

Cuestiones relacionadas