android - trato - Cómo arreglar la pantalla blanca en la aplicación ¿Comenzar?
trato de abrir play store y se queda en blanco (12)
Tengo una aplicación de Android que muestra una pantalla blanca durante 2 segundos al inicio. Mis otras aplicaciones no hacen esto, pero esta sí lo hace. También implementé una pantalla de bienvenida con la esperanza de que esto solucionara el problema. ¿Debo aumentar el tiempo de inactividad de mi pantalla de bienvenida? Gracias.
A continuación se muestra el enlace que sugiere cómo diseñar la pantalla de bienvenida. Para evitar el fondo blanco / negro, necesitamos definir un tema con fondo de bienvenida y configurar ese tema para que aparezca en el archivo de manifiesto.
https://android.jlelse.eu/right-way-to-create-splash-screen-on-android-e7f1709ba154
splash_background.xml dentro de la carpeta res / dibujable
<?xml version=”1.0" encoding=”utf-8"?>
<layer-list xmlns:android=”http://schemas.android.com/apk/res/android">
<item android:drawable=”@color/colorPrimary” />
<item>
<bitmap
android:gravity=”center”
android:src=”@mipmap/ic_launcher” />
</item>
</layer-list>
Agregar estilos debajo
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!-- Splash Screen theme. -->
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>
En el tema del conjunto manifiesto como se muestra a continuación
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Cree un estilo en su estilo.xml de la siguiente manera:
<style name="Theme.Transparent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
y úsalo con tu actividad en AndroidManifest como:
<activity android:name=".ActivitySplash" android:theme="@style/Theme.Transparent">
Deberías leer esta excelente publicación de Cyril Mottier: Lanzamiento de la cyrilmottier.com/2013/01/23/android-app-launching-made-gorgeous
Debe personalizar su Theme
en style.xml y evitar personalizar en su onCreate
como ActionBar.setIcon / setTitle / etc.
Consulte también la Documentación sobre consejos de rendimiento de Google.
Utilice la Trace View
y el Hierarchy Viewer
para ver la hora de mostrar sus vistas: Optimización del rendimiento de Android / Ajuste del rendimiento en Android
Use AsyncTask
para mostrar algunas vistas.
El fondo blanco proviene del Apptheme. Puede mostrar algo útil como el logotipo de su aplicación en lugar de la pantalla en blanco. Puede hacerlo utilizando un tema personalizado. En su aplicación Theme simplemente agregue
android:windowBackground=""
atributo. El valor del atributo puede ser una imagen o lista en capas o cualquier color.
Este es mi AppTheme en una aplicación de ejemplo:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Como puede ver, tengo los colores predeterminados y luego agregué el android:windowIsTranslucent
y lo configuré en true
.
Por lo que sé como un desarrollador de Android, esto es lo único que necesita configurar para ocultar la pantalla en blanco al inicio de la aplicación.
La respuesta del usuario543 es perfecta
<activity
android:name="first Activity Name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Pero:
¡ Tu actividad LAUNCHER debe extender Actividad , no AppCompatActivity como viene de manera predeterminada!
Ponlo en un estilo personalizado y resuelve todos los problemas. Usar la solución translúcida hacky hará que la barra de tareas y la barra de navegación sean translúcidas y que la pantalla secundaria o la pantalla principal se vean como espagueti.
<item name="android:windowDisablePreview">true</item>
Se puede arreglar estableciendo el tema en su manifiesto como
<activity
android:name=".MySplashActivityName"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
y después de eso si estás recibiendo
java.lang.IllegalStateException: necesita utilizar un tema Theme.AppCompat (o descendiente) con esta actividad.
entonces puede necesitar extender Activity en lugar de AppCompatActivity en su MySplashActivity.
¡Espero eso ayude!
Solo mencione el tema transparente para la actividad inicial en el archivo AndroidManifest.xml.
Me gusta:
<activity
android:name="first Activity Name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
debe deshabilitar la Configuración de estudio de Android en ejecución instantánea.
Archivo> Configuraciones> Compilación, Ejecución, Despliegue> Ejecución instantánea desmarque todas las opciones que se muestran allí.
Nota: El problema de la pantalla blanca debido a la ejecución instantánea es solo para compilaciones de depuración, este problema no aparecerá en las versiones de lanzamiento.
Al igual que tu tubo ... inicialmente muestran la pantalla del icono en lugar de la pantalla en blanco. Y después de 2 segundos muestra la pantalla de inicio.
Primero crea un XML dibujable en res / dibujable.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/gray"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
A continuación, configurará esto como el fondo de su actividad de salpicadura en el tema. Navegue a su archivo styles.xml y agregue un nuevo tema para su actividad de bienvenida
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
</resources>
En su nuevo SplashTheme, establezca el atributo de fondo de la ventana en su XML dibujable. Configure esto como el tema de su actividad splash en su AndroidManifest.xml:
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Este enlace proporciona lo que quieres. procedimiento paso a paso. https://www.bignerdranch.com/blog/splash-screens-the-right-way/
ACTUALIZAR:
La layer-list
puede ser aún más simple como esta (que también acepta vectores dibujables para el logotipo centrado, a diferencia de la etiqueta <bitmap>
):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Background color -->
<item android:drawable="@color/gray"/>
<!-- Logo at the center of the screen -->
<item
android:drawable="@mipmap/ic_launcher"
android:gravity="center"/>
</layer-list>
Ambas propiedades funcionan usan cualquiera de ellas.
<style name="AppBaseThemeDark" parent="@style/Theme.AppCompat">
<!--your other properties -->
<!--<item name="android:windowDisablePreview">true</item>-->
<item name="android:windowBackground">@null</item>
<!--your other properties -->
</style>