Адаптивные значки

Начиная с Android 8.0 (API уровня 26), в интерфейсе используются адаптивные значки приложений, которые могут принимать разную форму на различных устройствах. Например, на одном устройстве такой значок будет круглым, а на другом – квадратным с закругленными краями. Производители сами выбирают маску, которую система применяет ко всем значкам приложения. Кроме того, адаптивные значки используются для ярлыков, элементов приложения "Настройки" и экрана "Обзор", а также в диалоговых окнах предоставления совместного доступа.

Применение масок к макету адаптивного значка Применение масок к адаптивному значку

Рис. 1. Адаптивные значки поддерживают разные маски в зависимости от устройства

Адаптивный значок состоит из двух слоев: фона и переднего плана. Слои должны быть отрисованы в графическом редакторе без масок и теней по контурам.

Создание адаптивного значка (изометрическая иллюстрация)

Рис. 2. Адаптивные значки состоят из двух слоев и маски

В Android 7.1 (API уровня 25) и более ранних версий размер значков составлял 48 x 48 dp. Для новых версий действуют следующие правила:

  • Оба слоя должны иметь размер 108 x 108 dp.
  • Внутренняя область размером 72 x 72 dp выделяется под маску.
  • Внешние 18 dp от каждого края резервируются системой для визуальных эффектов, например таких, как параллакс или пульсация.

Примечание. Визуальные эффекты и анимация зависят от интерфейса конкретного устройства.

Внимание! В некоторых случаях производитель может задать маску диаметром всего 33 dp.

Применение эффекта параллакса к адаптивному значку (демонстрация) Применение анимации к адаптивному значку (демонстрация)

Рис. 3. Адаптивные значки поддерживают визуальные эффекты и анимацию

Внимание! Если вы не добавите нужные слои, значок вашего приложения не будет стилистически согласован с другими значками в интерфейсе и не будет поддерживать визуальные эффекты.

Подробнее о том, как создавать адаптивные значки с помощью Image Asset Studio

Создание адаптивных значков в формате XML

Чтобы создать адаптивный значок в формате XML, обновите манифест приложения, присвоив графическому ресурсу атрибут android:icon или android:roundIcon. Используйте атрибут android:roundIcon, только если вам нужно использовать отдельный объект для круглого значка – например, это может быть необходимо, если логотип бренда имеет форму круга. В этом фрагменте кода представлены оба атрибута:

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

Далее необходимо создать альтернативные графические ресурсы для Android 8.0 (API уровня 26) в файле res/mipmap-v26/ic_launcher.xml. Фон и передний план значка можно описать с помощью элемента <adaptive-icon>, задав во внутренних элементах <foreground> и <background> атрибут android:drawable.

    <?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" />
    </adaptive-icon>
    

Эти ресурсы также можно вписать в элементы <foreground> и <background>.

Если вы хотите применить те же маски и визуальные эффекты к ярлыкам, выполните одно из следующих действий:

  • Для статических ярлыков используйте элемент <adaptive-icon>.
  • Для динамических ярлыков необходимо вызвать метод createWithAdaptiveBitmap() при их создании.

Подробнее о ярлыках приложений

Дополнительные ресурсы

Чтобы узнать больше о разработке и внедрении адаптивных значков, ознакомьтесь со следующими статьями дизайнера и разработчика Google Ника Бутчера (Nick Butcher):