Как создать градиент Длинная тень для значка приложения в соответствии с рекомендациями по дизайну материалов в VectorDrawables?

На самом деле, я занимаюсь разработкой приложения для Android. Проблема заключается в экспорте иконки с градиентами в VectorDrawables. Я рисую свои иконки с помощью Adobe Illustrator и экспортирую их в Asset Studio для Android Studio.

Согласно Руководству по проектированию материалов, тень от объекта должна быть радиальной, градиентной, где 1-й ползунок находится на 32%, а непрозрачность составляет 15%. 2-й слайдер находится на 62% месте с непрозрачностью 2%. И последний слайдер на 100 % с полностью прозрачным цветом с углом 45°

Я создал "Иконку в Adobe Illustrator", отлично выгляжу и слежу за дизайном материала. Но когда я экспортирую их в Android Studio, изображение сильно изменяется, поскольку векторные рисунки еще не полностью поддерживают градиенты. Градиенты в VectorDrawables поддерживаются на устройствах Android 7.0 +. Другая проблема заключается в том, что Google говорит, что объект с возвышением должен показывать длинную тень с углом 45° (на основе градиента). Но с другой стороны, они не поддерживают градиенты полностью. Как я могу расширить значок градиента приложения для устройств ниже 7.0.

PS Я экспортирую файл Illustrator для поддержки Adaptive Icon. Пожалуйста, кто-нибудь, помогите мне добиться этой градиентной тени в VectorDrawables, чтобы они выглядели как старые иконки

1 ответ

Вместо того, чтобы включать градиент тени в иллюстраторе, вручную добавьте его в путь в векторном XML-файле:

<path 
    android:pathData="...">
    <aapt:attr name="android:fillColor">
      <gradient
          android:type="radial"
          android:centerX="54"
          android:centerY="54"
          android:gradientRadius="76.37">
        <!-- 15% black from center to 32% stop -->
        <item android:offset="0.0" android:color="#26000000" />
        <item android:offset="0.32" android:color="#26000000" />
        <!-- 2% black at 62% stop -->
        <item android:offset="0.62" android:color="#05000000" />
        <!-- fade to transparent -->
        <item android:offset="1.0" android:color="#00000000" />
      </gradient>
    </aapt:attr>
</path>

Для получения дополнительной информации https://medium.com/google-developers/implementing-adaptive-icons-1e4d1795470e

Примечание: поддержка градиента была добавлена ​​в VectorDrawables в API 24.

Другие вопросы по тегам