Android 12+ · AndroidX
Android Splash Screen: SplashScreen API Setup and Sizes
Short answer
Since Android 12 every app gets a system splash screen: a centered icon on a solid color. Add androidx.core:core-splashscreen, make a theme with parent Theme.SplashScreen, and call installSplashScreen() before super.onCreate(). The icon is 288×288 dp with the logo inside a 192 dp circle.
Checked against Android: Splash screens and Android: Migrate to the SplashScreen API in October 2026.
Icon sizes
| Image | Canvas | Visible circle | At xxxhdpi |
|---|---|---|---|
| Icon, no icon background | 288×288 dp | 192 dp | 1152×1152 px, 768 px circle |
| Icon with icon background | 240×240 dp | 160 dp | 960×960 px, 640 px circle |
| Animated icon (AVD) | 432 dp area | 288 dp | — |
| Branding image (bottom) | 200×80 dp | — | 800×320 px |
Anything outside the circle is masked. Google recommends against a branding image.
1. Add the dependency
dependencies {
implementation("androidx.core:core-splashscreen:1.2.0")
}The compat library brings the Android 12 splash screen to every device from API 23.
2. Create the theme
<style name="Theme.App.Starting" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/splash_background</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/splash_icon</item>
<item name="postSplashScreenTheme">@style/Theme.App</item>
</style>| Attribute | What it does |
|---|---|
windowSplashScreenBackground | One solid color, no transparency |
windowSplashScreenAnimatedIcon | The center icon (a drawable or an AVD) |
windowSplashScreenAnimationDuration | Needed only for Android 12 (API 32) with an animated icon |
windowSplashScreenIconBackgroundColor | A circle behind the icon, for contrast. Use parent Theme.SplashScreen.IconBackground. |
postSplashScreenTheme | Required: your app's normal theme |
<activity
android:name=".MainActivity"
android:theme="@style/Theme.App.Starting">3. Install it in your activity
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
val splashScreen = installSplashScreen()
super.onCreate(savedInstanceState)
// Keep it on screen until data is ready
splashScreen.setKeepOnScreenCondition { viewModel.isLoading.value }
setContent { App() }
}
}Without a condition, the splash closes as soon as the app draws its first frame.
Android splash screen not showing: fixes
| You see | Why | Fix |
|---|---|---|
| No splash when reopening the app | A hot start never shows the splash | Expected. Swipe the app away and cold start it. |
| Splash config ignored | installSplashScreen() runs after super.onCreate() | Call it before super.onCreate() |
| Wrong theme after the splash | postSplashScreenTheme missing | Point it at your app theme |
| Logo cut off | Logo outside the 192 dp (or 160 dp) circle | Shrink it to fit the circle |
| Logo hard to see | Low contrast with the background | Add windowSplashScreenIconBackgroundColor |
| Old full-screen splash still shows first | A separate splash activity | Remove it; the system splash replaces it |
FAQ
What size is the Android splash screen icon?
288×288 dp with the logo in a 192 dp circle, or 240×240 dp in a 160 dp circle if you add an icon background.
Can I use a full-screen image?
Not with the system splash. It shows one centered icon on a solid color.
How long can the animation be?
Google recommends up to 1,000 ms, with a start delay of at most 166 ms.
Does it work below Android 12?
Yes, with core-splashscreen, from API 23.
How do I keep it on screen while loading?
splashScreen.setKeepOnScreenCondition { … } returns true until you're ready.