Launcher icons represent your app on the device's home screen. Since Android 8.0 (Oreo), these should use the Adaptive Icon format.
Adaptive icons consist of two layers (foreground and background) that can be displayed in different shapes on different devices.
Notification icons appear in the status bar and notification shade. They should be simple, monochromatic silhouettes.
Action bar icons appear in the app's top bar or menus. They should be simple, clear symbols that communicate an action.
Use this tool to create all the icon types and density variations you need for your app.
Download the ZIP file containing all your icons organized by type and density.
Extract and place the icons in their corresponding resource directories:
res/mipmap-mdpi/ic_launcher.png
res/mipmap-hdpi/ic_launcher.png
res/mipmap-xhdpi/ic_launcher.png
res/mipmap-xxhdpi/ic_launcher.png
res/mipmap-xxxhdpi/ic_launcher.png
For adaptive icons:
res/mipmap-[density]/ic_launcher_foreground.png
res/mipmap-[density]/ic_launcher_background.png
res/mipmap-anydpi-v26/ic_launcher.xml
Ensure your AndroidManifest.xml references the launcher icon:
<application
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
... >
For notification icons, use them in your notification builder:
NotificationCompat.Builder(context, channelId)
.setSmallIcon(R.drawable.ic_notification)
...
Use simple shapes and minimal details, especially for smaller icons like notification and action bar icons.
For adaptive icons, keep important content within the inner 72×72dp area to ensure it's visible in all shape masks.
Ensure your icons are recognizable even at the smallest densities they'll be displayed at.
Notification icons should be simple, high-contrast silhouettes without internal details.
Adhere to Google's Material Design icon guidelines for the most consistent look across Android.
Always include icons for all density buckets to ensure your app looks good on all devices.