All Guides

Android App Icon Sizes: Complete Guide for 2025

6 min read

Android icons are more complicated than iOS. You have adaptive icons, legacy icons, different launcher shapes, and varying screen densities to consider. This guide covers what you actually need to ship an Android app.

The Quick Reference

For a modern Android app (API 26+), you need launcher icons at these densities:

DensityScalePixelsFolder
mdpi1x48x48mipmap-mdpi
hdpi1.5x72x72mipmap-hdpi
xhdpi2x96x96mipmap-xhdpi
xxhdpi3x144x144mipmap-xxhdpi
xxxhdpi4x192x192mipmap-xxxhdpi

These go in your res/mipmap-* folders. The system picks the right one based on the device's screen density.

Adaptive Icons (Android 8.0+)

Android 8.0 introduced adaptive icons. Instead of one static image, you provide two layers:

  • Foreground layer: Your actual icon (108x108dp, 432x432px at xxxhdpi)
  • Background layer: A color or pattern behind it (same size)

The system combines these and applies a mask based on the device manufacturer. Samsung uses circles, Pixel uses rounded squares, others use their own shapes.

The Safe Zone

Here's the tricky part. Your foreground content needs to fit within a 66dp circle (264px at xxxhdpi) centered in the 108dp canvas. Content outside this safe zone might get cropped depending on the launcher's mask shape.

Total canvas: 108dp (432px at xxxhdpi)
Safe zone: 66dp circle (264px diameter)

If your logo extends to the edges, parts of it will disappear on some devices. Keep important elements within that center circle.

Adaptive Icon Files

You need these files for adaptive icons:

FileSize (xxxhdpi)Purpose
ic_launcher_foreground.png432x432Icon content
ic_launcher_background.png432x432Background layer
ic_launcher.xml-Combines the layers

The XML file looks like this:

<adaptive-icon>
    <background android:drawable="@mipmap/ic_launcher_background"/>
    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

You can also use a solid color for the background instead of an image.

Legacy Icons (Pre-Android 8.0)

Older devices don't support adaptive icons. You still need regular PNG icons for compatibility:

DensityPixelsFile
mdpi48x48ic_launcher.png
hdpi72x72ic_launcher.png
xhdpi96x96ic_launcher.png
xxhdpi144x144ic_launcher.png
xxxhdpi192x192ic_launcher.png

These should include any background and shadows baked in, since there's no layer separation on older devices.

Play Store Icon

The Google Play Store needs a high-resolution icon:

SizeFormatRequirements
512x512PNG32-bit, no alpha, max 1024KB

This is separate from your app icons. It shows up on your Play Store listing page. Make it look good at this size since it's what people see when deciding to install.

Unlike the App Store, Google does allow some transparency in the Play Store icon, but a solid background usually looks better in search results.

Notification Icons

Android notifications need their own icons. These are simpler:

DensityPixelsRequirements
mdpi24x24White silhouette on transparent
hdpi36x36White silhouette on transparent
xhdpi48x48White silhouette on transparent
xxhdpi72x72White silhouette on transparent
xxxhdpi96x96White silhouette on transparent

Notification icons must be white silhouettes. The system applies color based on your notification settings. If you use colors or complex shapes, they'll show up as solid white squares on newer Android versions.

Folder Structure

Here's how your icon files should be organized:

res/
├── mipmap-mdpi/
│   ├── ic_launcher.png (48x48)
│   ├── ic_launcher_foreground.png (108x108)
│   └── ic_launcher_background.png (108x108)
├── mipmap-hdpi/
│   ├── ic_launcher.png (72x72)
│   ├── ic_launcher_foreground.png (162x162)
│   └── ic_launcher_background.png (162x162)
├── mipmap-xhdpi/
│   ├── ic_launcher.png (96x96)
│   ├── ic_launcher_foreground.png (216x216)
│   └── ic_launcher_background.png (216x216)
├── mipmap-xxhdpi/
│   ├── ic_launcher.png (144x144)
│   ├── ic_launcher_foreground.png (324x324)
│   └── ic_launcher_background.png (324x324)
├── mipmap-xxxhdpi/
│   ├── ic_launcher.png (192x192)
│   ├── ic_launcher_foreground.png (432x432)
│   └── ic_launcher_background.png (432x432)
└── mipmap-anydpi-v26/
    └── ic_launcher.xml

The mipmap-anydpi-v26 folder contains the XML that references your adaptive icon layers. Android 8.0+ uses this; older versions fall back to the PNG files.

Common Mistakes

Ignoring the safe zone. Your logo gets cropped on Samsung phones because you didn't account for the circular mask. Always test with different launcher shapes.

Using the wrong folder. Icons go in mipmap, not drawable. The mipmap folders are preserved at higher densities when the APK is optimized, ensuring your launcher icon is always crisp.

Complex notification icons. Detailed, colorful notification icons become unreadable white blobs. Use simple, recognizable silhouettes.

Forgetting legacy icons. Even if you target newer Android versions, include legacy icons for older devices. The fallback matters.

Wrong Play Store dimensions. The Play Store wants exactly 512x512. Not 1024, not 256. If you upload the wrong size, the console will reject it.

Monochrome Icons (Android 13+)

Android 13 introduced themed icons. If the user enables themed icons in their settings, the system uses a monochrome version of your icon that matches their wallpaper colors.

You can provide a dedicated monochrome layer:

<adaptive-icon>
    <background android:drawable="@mipmap/ic_launcher_background"/>
    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
    <monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
</adaptive-icon>

The monochrome drawable should be a single-color silhouette, similar to notification icons. If you don't provide one, the system attempts to generate it automatically, which sometimes looks bad.

Testing Your Icons

Before releasing:

  1. Test on multiple launchers. Pixel, Samsung, OnePlus all use different mask shapes.
  2. Check the safe zone. Use Android Studio's adaptive icon preview to see how your icon looks with different masks.
  3. Verify notification icons. Send a test notification and make sure it's recognizable.
  4. Check the Play Store listing. Upload your 512x512 icon and preview how it looks in search results.

Summary

Android icons are more complex than iOS because of adaptive icons and density buckets. At minimum, you need:

  • 5 sizes of launcher icons (mdpi through xxxhdpi)
  • Adaptive icon layers for Android 8.0+
  • A 512x512 Play Store icon
  • Notification icons if your app sends notifications

Keep your foreground content within the 66dp safe zone, test on multiple devices, and provide legacy fallbacks. That covers most of what you'll encounter.

Skip the manual work

Generate all these icon sizes automatically with IconPack. Just describe your icon and get every size in one ZIP.

Try Free