🚀 Introduction
A splash screen is often the first visual interaction a user has with your app. It’s a critical branding opportunity and sets the tone for the overall user experience. In this guide, you’ll learn how to implement a modern splash screen in Android using both traditional methods and the new Android 12 SplashScreen API.
📱 What is a Splash Screen?
A Splash Screen is a screen that appears briefly when the app is launched, usually displaying a logo, app name, or loading animation.
🧩 Key Points
- Android 12 introduces the SplashScreen API
- Can be animated using Lottie or Jetpack Compose
- Recommended for brand identity and better UX
- Supports light/dark themes
- Time delay or transition to next screen can be customized

🛠️ Implementation: Jetpack Compose (Pre-Android 12)
@Composable
fun SplashScreen(navController: NavController) {
LaunchedEffect(true) {
delay(2000)
navController.navigate("home") {
popUpTo("splash") { inclusive = true }
}
}
Box(
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colorScheme.primary),
contentAlignment = Alignment.Center
) {
Text("MyApp", style = MaterialTheme.typography.headlineLarge, color = Color.White)
}
}
📦 Implementation: Using Android 12 SplashScreen API
In themes.xml
:
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="android:windowSplashScreenBackground">@color/primary</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/logo</item>
</style>
In MainActivity.kt
:
override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen()
super.onCreate(savedInstanceState)
setContent { MyApp() }
}

✨ Enhancements
- Add animation with Lottie
- Fade in logo with alpha transition
- Personalize theme for splash-only visuals
🤖 Best Practices
- Keep splash screen short (< 3 seconds)
- Use app branding colors and logo
- Avoid unnecessary delays
- Seamless transition to onboarding or home screen
❓ FAQ
Q1: Is the SplashScreen API backward compatible?
A: No, it works natively only on Android 12+. You’ll need custom solutions for older versions.
Q2: Can I use an animated GIF or video in the splash screen?
A: It’s better to use vector animations (Lottie or Compose animations) for performance.
🔗 Internal Links
- Day 17: Working with Images in Compose
- Day 22: Showing Loading and Error States
- Day 24: Saving Preferences with DataStore
🏁 Conclusion
Implementing a splash screen is about more than just loading time — it’s about first impressions. Android 12 has made this easier and more consistent across devices. Start integrating your app’s branding smartly today!