2011-01-29 13 views
14

Así que he leído Romain Guy's blog post para configurar el fondo de la ventana y el rendimiento percibido, y estoy tratando de emular eso. Es una solución tan simple y no estoy seguro de por qué no puedo hacer que esto funcione, pero la actividad simplemente se niega a captar el fondo dirigido.Android: configuración de ventana de fondo en la actividad iniciada

Tengo un ListView que onListItemClick inicia una nueva actividad, una que tarda 3-5 segundos en cargarse por completo. Mientras el usuario está esperando, me gustaría dibujar una ventana Antecedentes para que 'vean' la actividad antes de que esté realmente lista. Aquí está mi código:

fragmento AndroidManifest para la Actividad lanzado:

<activity 
     android:name=".activity.EditorActivity" 
     android:screenOrientation="portrait" 
     android:windowBackground="@drawable/background_editor"> 

El diseño de XML para la EditorActivity:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
    android:id="@+id/editor" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:text="Editor" /> 
</FrameLayout> 

Y, por último, el dibujable que se encuentra en el Manifiesto, background_editor.xml :

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/editor_bg" 
    android:tileMode="repeat" /> 

editor_bg es un archivo .png ubicado en el folio dibujable r.

El resultado final es la EditorActivity se puso en marcha, y todo lo que veo es el fondo negro por defecto con el texto "Editor" muestra en blanco (añadí que para la prueba de que el archivo XML se carga correctamente.

I También he intentado establecer el fondo de FrameLayout y TextView en transparente a través de android: background = "@ android: color/transparent", pensando que tal vez estaban por defecto en un fondo negro, pero sin suerte.

Ha sido un largo algunos días, estoy seguro de que me falta algo simple ... ¿algún error obvio que estoy cometiendo aquí?

+1

Enlace actualizado a la publicación a la que se hace referencia: http: // y roid-developers.blogspot.com/2009/03/window-backgrounds-ui-speed.html –

Respuesta

37

Intente configurar el fondo de la ventana antes de iniciar la nueva actividad mediante programación.

getWindow().setBackgroundDrawableResource(R.drawable.my_drawable); 
1

funciona para mí si he declarado esto en un estilo del tema en styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <style name="CustomTheme" parent="android:Theme.Holo.NoActionBar"> 
     <item name="android:windowBackground">@color/bg_evening</item> 
    </style> 

</resources> 

y en el manifiesto me puse este tema a mi solicitud:

<application 
    android:name="com.my_app.pack" 
    android:theme="@style/CustomTheme" > 
... 

o a una de mis actividades:

<activity 
    android:name="..." 
    android:theme="@style/CustomTheme"> 
... 

puede declarar múltiples estilos de tema y agregar cualquiera de ellos a cualquiera de sus actividades, que anulará el tema establecido en la aplicación

2

Me encontré con el mismo problema y desperdicié mi día en él. No podemos establecer el tema en Java, ya que en mi caso el control llegó a crear mi actividad de bienvenida demasiado tarde. Hasta que la pantalla negra permanezca visible.

Esto me dio la pista de que la ventana tiene que ser administrada desde el tema que especificamos en manifiesto.

No es el manifiesto que tengo:

<activity 
     android:name=".main.activities.SplashScreen" 
     android:theme="@style/Splash" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
</activity> 

Ahora El tema que he creado es el siguiente:

<style name="Splash" parent="@style/Theme.AppCompat.Light"> 
    <item name="android:windowBackground">@drawable/splash</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowNoTitle">true</item> 
    <item name="colorPrimaryDark">@color/green_09</item> 
    <item name="colorPrimary">@color/green_09</item> 
    <item name="windowActionBar">false</item> 
</style> 

Splash en el recurso estirable que contiene un recurso de mapa de bits, tengo que pellizcar un poco para que se vea perfecto, no estirado y en el centro:

<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:antialias="true" 
    android:dither="true" 
    android:gravity="fill" 
    android:src="@drawable/splash_screen" /> 
Cuestiones relacionadas