Skip to content

Most visited

Recently visited


Adaptive Icons

In this document

  1. Creating Adaptive Icons

Android O introduces adaptive launcher icons, which can display a variety of shapes across different device models. For example, a launcher icon can display using a circular shape on one OEM device, and display a squircle on another device. Each device OEM provides a mask, which the system then uses to render all icons with the same shape. The new launcher icons are also used in shortcuts, the Settings app, sharing dialogs, and the overview screen.

A variety of masks applied to an adaptive icon wireframe A variety of masks applied to an adaptive icon

Figure 1. Adaptive icons support a variety of masks.

You can control the look of your launcher icon by defining 2 layers, consisting of a background and a foreground. You must provide icon layers as drawables in PNG format without masks or background shadows.

Isometric illustration of creating an adaptive icon

Figure 2. Adaptive icons are defined using 2 layers and a mask.

In previous versions of Android, launcher icons were sized at 48 x 48 dp. You must now size your icon layers using the following guidelines.

Demo of parallax applied to an adaptive icon Demo of pickup animation applied to an adaptive icon

Figure 3. Adaptive icons support a variety of visual effects.

Creating Adaptive Icons

To add an adaptive icon to an app, begin by updating the android:icon attribute in your app manifest to specify a drawable resource. You can also define an icon drawable resource using the android:roundIcon attribute. You must only use this attribute if you require a different icon asset for circular masks, if for example the branding of your logo relies on a circular shape. The following code snippet illustrates both of these attributes:


Next you must create alternative drawable resources in your app for use with Android O in res/mipmap-anydpi/ic_launcher.xml. You can then use the <adaptive-icon> element to define the foreground and background layer drawables for your icons. The <foreground> and <background> inner elements both support the android:drawable attribute.

    <background android:drawable="@color/ic_background"/>
    <foreground android:drawable="@mipmap/ic_foreground"/>

If you don’t update your launcher icon with the necessary layers, the icon doesn’t look consistent with other icons that the system UI displays, and doesn’t support visual effects.

This site uses cookies to store your preferences for site-specific language and display options.


This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.