Как отформатировать / размер VectorDrawable для адаптивного значка в Android - PullRequest
1 голос
/ 12 апреля 2019

Я пытаюсь создать адаптивную иконку для приложения, используя два VectorDrawables для фона и переднего плана. Однако вектор переднего плана, который был создан из SVG, созданного в Illustrator, не может быть измерен или помещен в значок должным образом.

Вектор переднего плана для будущей ссылки

Foreground vector for future reference

Я изменил размеры векторной области просмотра и ширины области просмотра до 108dp x 108dp в соответствии со спецификацией в адаптивном значке Guidelines , однако это вызвало только смещение переднего плана.

<vector android:height="108dp" android:viewportHeight="108"
    android:viewportWidth="108" android:width="108dp"
    xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">

    ...

</vector>

Outcome

Однако, когда viewportheight и viewportwidth установлены на меньшие значения (например, 50), вектор появляется в правильном положении, но слишком велик.

<vector android:height="108dp" android:viewportHeight="50"
    android:viewportWidth="50" android:width="108dp"
    xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">

    ...

</vector>

Outcome

Я новичок в работе с Android, и поэтому я не уверен, какие другие факторы могут быть причиной этого. Был другой подобный вопрос , однако причина эффекта смещения не была устранена.

1 Ответ

0 голосов
/ 24 апреля 2019

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

Я попробовал "волшебника":

  • Щелкните правой кнопкой мыши по папке res и выберите New> Image Asset

Это позволяет мне масштабировать мой вектор поверх фонового вектора, , но по центру .

Глядя на сгенерированные векторные файлы для значка, он вкладывает мой векторный путь в групповой тег с атрибутами translateX и translateY, например:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="52.173912"
android:viewportHeight="52.173912">

<group android:translateX="14.086957"
  android:translateY="14.086957">

    <path.../>

  </group>
</vector>

Попробуйте сделать это прямо в xml, если вы хотите избежать генерации файлов, последующего удаления сгенерированных файлов png и т. Д.


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

Было бы идеально, если бы мы могли масштабировать части переднего плана / фона адаптивного значка в самом файле адаптивного значка - возможно, кто-то уже знает, как это сделать?

...