Estoy tratando de decidir cuál es el mejor enfoque para crear una pantalla de presentación de aplicaciones teniendo en cuenta las últimas recomendaciones de Google sobre la elección de una única aplicación de actividad siempre que sea posible.

Mira aquí:

"El nuevo enfoque es utilizar la estructura de una actividad siempre que sea posible".

Y aquí:

"Hoy presentamos el componente de navegación como un marco para estructurar su interfaz de usuario en la aplicación, con un enfoque en hacer que una aplicación de actividad única sea la arquitectura preferida".

Cualquier buen enfoque de pantalla de inicio que he encontrado tiene una actividad dedicada para la pantalla de inicio:

Ver aquí

Y aquí

¿Alguien más ha tenido experiencia en la creación de una pantalla de presentación en una sola aplicación de actividad? ¿La recomendación de actividad única incluye la pantalla de inicio o es un caso especial? ¿Alguien tiene buenos ejemplos o consejos sobre esto?

Saludos, Paul.

14
Paul 16 oct. 2018 a las 15:41

2 respuestas

La mejor respuesta

El enfoque que utilizo es el siguiente:

Primero defina un dibujable para el fondo:

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

    <item
        android:drawable="@color/green"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ic_launcher"/>
    </item>

</layer-list>

2. Defina un nuevo estilo para usar en la pantalla de bienvenida:

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/background_splash</item>
</style>

3.Haga que su actividad implemente use el tema de bienvenida:

<activity
    android:name=".MainActivity"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

4. Al crear, antes de la superinvocatoria y antes de la vista de contenido establecida, configure el tema de la aplicación predeterminado:

override fun onCreate(savedInstanceState: Bundle) {
    setTheme(android.R.style.AppTheme)
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main);
}

Este enfoque es el que he estado usando incluso con múltiples Actividades, ya que sigue las pautas establecidas por Google: muestra el toque de inmediato y no se queda más tiempo del necesario.

14
Eric Martori 16 oct. 2018 a las 12:54

Si usa ConstraintLayout en sus diseños, puede usar la clase Group de Android para agrupar varias vistas. Consulte el siguiente enlace para obtener más información.

https://developer.android.com/reference/android/support/constraint/Group

Esta clase controla la visibilidad de un conjunto de widgets referenciados. Se hace referencia a los widgets al agregarlos a una lista de identificadores separados por comas, por ejemplo:

 <android.support.constraint.Group
          android:id="@+id/group"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:visibility="visible"
          app:constraint_referenced_ids="button4,button9" />

FYI: varios grupos pueden hacer referencia a los mismos widgets; en ese caso, el orden de declaración XML definirá el estado de visibilidad final (el grupo declarado en último lugar tendrá la última palabra).

Espero que esto te ayude a resolver el problema.

2
Mohit Ajwani 16 oct. 2018 a las 12:51