Layers, not pixels.

How Android shapes your launcher icon.

Android Adaptive Icons, Explained

Last updated

  • Android
  • Adaptive icons
  • Themed icons

Since Android 8.0, a launcher icon is not one picture but two layers that the system stacks, masks and animates. This guide covers the layer sizes, the safe zone, the files Android Studio expects, themed icons and the separate Play Store icon.

Why Android uses layers

Before Android 8.0 (API level 26), every app shipped a flat PNG and drew its own shape. Some icons were circles, some were squares and some had a shadow baked in, so a home screen looked inconsistent. Adaptive icons fixed this by handing the shape to the device. You supply a foreground layer with your logo and a background layer with a colour or pattern. The launcher then applies its own mask, which might be a circle, a squircle or a rounded square depending on the manufacturer and the user's settings.

Because the layers are separate, the system can also move them independently. Some launchers shift the foreground slightly for a parallax effect or scale it when the icon is pressed. That is why each layer is larger than the part you actually see.

Layer size and safe zone

Both layers are 108 × 108dp. The launcher shows only the middle 72 × 72dp, leaving 18dp on every side for masking and motion effects. Inside the visible area, Android guarantees that a centred 66dp region is never clipped by any mask shape. Google's guidance is to keep the logo between 48dp and 66dp.

Adaptive icon layer: 108dp canvas, 72dp visible area and 66dp safe zonelogo48–66dp18dp108 × 108dp layerfull canvas, used for effects72 × 72dp visible areashape set by the launcher mask66dp safe zonenever clipped by any mask
One adaptive icon layer drawn to scale. Anything outside the 66dp circle may be cut off on some devices.

In practice, the background layer should fill the whole 108dp square edge to edge, since any part of it may be revealed when the foreground moves. The foreground should be transparent around the logo, with the logo itself kept inside the safe zone. A common mistake is scaling a square logo to fill the 72dp area: on a circular mask, its corners disappear.

Sizes in pixels

Android measures icons in density-independent pixels (dp). The pixel size of each file depends on the screen density bucket. The baseline is mdpi, where 1dp equals 1px, and the other buckets scale from there. Launcher icons belong in mipmap folders rather than drawable folders, because all mipmap densities are kept in the APK and some launchers draw icons up to 25% larger than the device's own bucket.

FolderScaleLegacy icon (48dp)Adaptive layer (108dp)
mipmap-mdpi1×48 × 48 px108 × 108 px
mipmap-hdpi1.5×72 × 72 px162 × 162 px
mipmap-xhdpi2×96 × 96 px216 × 216 px
mipmap-xxhdpi3×144 × 144 px324 × 324 px
mipmap-xxxhdpi4×192 × 192 px432 × 432 px
Pixel sizes for each density bucket. Legacy icons are 48dp; adaptive icon layers are 108dp.

Layers can also be vector drawables, which Android recommends because a single file scales to every density. Bitmaps work fine too, and are the practical choice for photographic or textured artwork.

The adaptive-icon XML

The layers are tied together by an XML file in res/mipmap-anydpi-v26/. The -v26 qualifier means only devices on API 26 and newer read it; older devices fall back to the PNGs in the density folders.

<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@drawable/ic_launcher_background" />
    <foreground android:drawable="@drawable/ic_launcher_foreground" />
    <monochrome android:drawable="@drawable/ic_launcher_monochrome" />
</adaptive-icon>

The manifest then points at the icon by name. android:icon is required. android:roundIcon is optional and used by launchers that ask specifically for a circular icon; for API 26 and newer it is usually another adaptive-icon XML with the same layers.

<application
    android:icon="@mipmap/ic_launcher"
    android:roundIcon="@mipmap/ic_launcher_round"
    ... >
</application>

A typical resource folder ends up looking like this:

res/
  mipmap-anydpi-v26/
    ic_launcher.xml            <- adaptive icon (API 26+)
    ic_launcher_round.xml
  mipmap-mdpi/    ic_launcher.png  (48 × 48)
  mipmap-hdpi/    ic_launcher.png  (72 × 72)
  mipmap-xhdpi/   ic_launcher.png  (96 × 96)
  mipmap-xxhdpi/  ic_launcher.png  (144 × 144)
  mipmap-xxxhdpi/ ic_launcher.png  (192 × 192)

Themed icons and the monochrome layer

Starting with Android 13 (API level 33), users can turn on themed icons. The launcher then ignores your colours and tints the icon using the palette from the user's wallpaper. To support this, add a <monochrome> element to the adaptive-icon XML, as in the example above.

The monochrome drawable is used as a shape only: the system keeps the alpha channel and replaces the colour. Design it as a single flat silhouette of your logo, with the same 66dp safe zone. Fine gradients, thin outlines and multi-colour details either vanish or turn into a blob once tinted. If your foreground layer is already a simple one-colour mark, you can often reuse it, which is what Google's own example does.

Google's documentation notes that newer Android releases can theme icons automatically when no monochrome layer is provided. A system-generated version rarely looks as clean as one you designed, so supplying your own layer is still the safer choice.

Legacy and round icons

If your minSdk is 26 or higher, the adaptive XML covers every device and you only need the PNGs as a fallback for tools that expect them. If you support older versions, those devices show the flat PNG from the density folders exactly as drawn, with no mask applied. That PNG should therefore already have a sensible shape, padding and background, rather than being a bare logo on transparency.

The Play Store icon is different

The icon on your Google Play listing is uploaded separately in the Play Console and does not come from your APK. Its specification is:

  • Size: 512 × 512 px, 32-bit PNG, sRGB, up to 1024 KB.
  • Shape: a full square. Google Play applies rounded corners (a radius of 30% of the icon size) and a shadow itself, so do not add either.
  • Transparency: avoid it; use a solid background colour.

Because Play adds its own corners, the store icon is usually designed full bleed: background colour to every edge, logo centred. Reusing a launcher PNG with built-in padding and rounded corners tends to look small and double-masked in the store. The app icon guidelines summarise the store requirements for both platforms side by side.

Common mistakes

  • Logo outside the safe zone. It looks fine in a square preview but loses its edges on a circular mask.
  • Shadows or rounded corners baked into a layer. The launcher masks and shades the icon; adding your own leads to a doubled or clipped shadow.
  • A background layer with transparent areas. Gaps show through as black or as the launcher's default colour.
  • Icons in drawable instead of mipmap. Launchers that request a higher density may get a blurry upscaled icon.
  • A colourful monochrome layer. Only the shape is kept, so detailed artwork becomes an unreadable silhouette.
  • Forgetting the Play Store icon. It is a separate 512 px upload with its own rules.

The app icon generator handles the layout for you: it keeps the artwork inside the safe zone, writes the foreground, background and optional monochrome layers for every density, adds the mipmap-anydpi-v26 XML and includes a 512 px Play Store icon. If you are also shipping a web app, the PWA manifest icons guide explains the browser equivalent of adaptive icons.

More guides

  • iOS App Icon Sizes – Every iPhone, iPad and App Store icon size, what each one is used for, and how Xcode’s single-size asset works.
  • PWA Manifest Icons – Which icons a web app manifest needs, how maskable icons work and how browsers choose between them.
  • iOS Dark & Tinted Icons – How dark and tinted Home Screen icons work, what to supply for each appearance and common mistakes.
  • macOS, watchOS & visionOS Icons – Icon shapes, sizes and layering for Apple platforms beyond iPhone and iPad.
  • App Icon Rejections – The icon problems that get builds rejected on the App Store and Google Play, and how to avoid them.