SplashScreen Android 12
Implementación de la nueva SplashScreen API de Android 12 con animaciones personalizadas y transiciones fluidas
Descripción del Proyecto
Android 12 introdujo la nueva SplashScreen API que permite crear animaciones de lanzamiento más atractivas y consistentes. Este proyecto demuestra la implementación completa de esta API con diferentes tipos de animaciones y personalizaciones.
La nueva API incluye una animación de entrada, una pantalla de splash que muestra el icono de la aplicación, y una transición hacia la aplicación principal. Todo esto se logra de manera nativa y optimizada.
Tecnologías Utilizadas
SplashScreen API
API nativa de Android 12+
Custom Animations
Animaciones personalizadas
Kotlin
Lenguaje principal
Android 12+
Compatibilidad moderna
Características Principales
Launch Animation
Animación fluida de lanzamiento que mejora la experiencia del usuario durante el inicio de la aplicación.
Custom Icon Animation
Personalización del icono de la aplicación con animaciones que reflejan la identidad de la marca.
Duración Configurable
Control total sobre la duración de la splash screen para optimizar la experiencia de usuario.
Temas Personalizados
Soporte para temas claros y oscuros con transiciones suaves entre diferentes modos.
Alto Rendimiento
Implementación optimizada que no afecta el tiempo de carga de la aplicación.
Backward Compatibility
Compatibilidad con versiones anteriores de Android usando SplashScreen compat library.
Demostraciones Visuales
El proyecto incluye múltiples ejemplos de animaciones y transiciones:
Animación Básica
Implementación básica de la SplashScreen API con transición estándar.
Animación Personalizada
Splash screen con animación personalizada del icono y efectos visuales.
Transición Avanzada
Transición compleja con múltiples elementos animados y efectos de entrada.
Implementación Técnica
Configuración Básica
// En el tema de la aplicación (themes.xml)
<style name="Theme.App.Starting" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/splash_background</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_launcher_animated</item>
<item name="windowSplashScreenAnimationDuration">1000</item>
<item name="postSplashScreenTheme">@style/Theme.App</item>
</style>
Implementación en MainActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// Instalar la splash screen
val splashScreen = installSplashScreen()
super.onCreate(savedInstanceState)
// Personalizar la duración
splashScreen.setKeepOnScreenCondition {
// Mantener splash screen mientras se cargan los datos
!dataLoaded
}
// Listener para animaciones personalizadas
splashScreen.setOnExitAnimationListener { splashScreenView ->
// Crear animación personalizada de salida
createCustomExitAnimation(splashScreenView)
}
setContentView(R.layout.activity_main)
}
}
Animaciones Personalizadas
private fun createCustomExitAnimation(splashScreenView: SplashScreenView) {
val slideUp = ObjectAnimator.ofFloat(
splashScreenView,
View.TRANSLATION_Y,
0f,
-splashScreenView.height.toFloat()
)
val fadeOut = ObjectAnimator.ofFloat(
splashScreenView,
View.ALPHA,
1f,
0f
)
AnimatorSet().apply {
interpolator = AnticipateInterpolator()
duration = 500L
playTogether(slideUp, fadeOut)
doOnEnd { splashScreenView.remove() }
start()
}
}
Beneficios de la Implementación
- Mejor UX: Transiciones más fluidas y profesionales
- Consistencia: Comportamiento uniforme en todo el ecosistema Android
- Performance: Optimizado por el sistema operativo
- Facilidad: API simple y fácil de implementar
- Personalización: Control total sobre la apariencia y comportamiento