Подтвердить что ты не робот

VectorDrawable не корректно отображает API 23

Я заменяю все мои значки VectorDrawables везде, где это возможно. Но я заметил, что некоторые из них не корректно отображают API 23, и цвет, кажется, истекает кровью. Один из этих 3 штук отлично. Вот скриншот от изолированного проекта Я создал:

введите описание изображения здесь

В API 21 выглядит отлично:

введите описание изображения здесь

Исходный код примера приложения находится здесь

Я использую AppCompat 24.0.0, приложение: srcCompat в ImageView и установил vectorDrawables.useSupportLibrary = true. Я также пробовал AppCompat 23.4.0 с целью 23. Однако, если я удалю appCompat и настрою minSdkVersion на 21 и использую поддержку родных векторов, результаты не изменяются. IDE не жалуется, что ничего не поддерживается. Как мне понять, в чем проблема? Это ошибка платформы? Есть ли обходные пути?

4b9b3361

Ответ 1

Во-первых, я не разработчик Android, я дизайнер, помогающий с некоторыми производственными активами в Android Studio.

Мы начали испытывать те же проблемы с некоторыми из наших векторных чертежей от 22 до 24.

(Я обновил свой проект, чтобы использовать Nexus 6 API 23 и скомпилировать Версию 24, построить версию 24, целевой SDK 24. Тогда мои чертежи, казалось, закрывали пути и добавляли заливки, похожие на то, что происходит выше.)

Пробовал

У меня есть доступ к Adobe Illustrator CC (19.2.1) и были изучены различные параметры пути на объекте с инсультом. Все от расширения путей до заполнения, объединения путей, создания сложных путей, закрывающих путей и т.д. Без везения.

Опции конвертера

В режиме онлайн SVG to Drawable Converter (http://inloop.github.io/svg2android/) есть опция: "Bake превращается в путь (экспериментальный)", и я выбрал это, и хотя он был улучшен рендеринг, он еще не был совершенным.

Потенциальное решение

Затем я снова пошел в Illustrator и попробовал "Сохранить как" SVG и "Экспорт" в качестве SVG. Я не уверен, что различия между Adobe Illustrator между этими двумя настройками, но они выплевывают несколько разные SVG-данные XML.

Затем я взял новый "Сохранить как SVG" и упал в этот онлайн-конвертер: http://inloop.github.io/svg2android/

И были ли эти параметры отмечены:

  • Удалить пустые группы без атрибутов
  • Выпекать превращается в путь (Экспериментальный)

Новый возвращаемый XML-текст, возвращаемый, кажется, работает корректно.

Я не уверен, что это будет работать с другой векторной графикой, имеющей штрихи, фигуры и заливки, но подумал, что я поделюсь своим опытом. Это не реальное решение, поскольку оно, похоже, является ошибкой в ​​новом Android SDK, и оно его поддерживало раньше, но для некоторых людей это может быть временная работа.

Ответ 2

У меня была точно такая же проблема только для API 23. Я устанавливал свой источник ImageView динамически, а не в xml. Я понял, что проблема в том, что я делаю:

Drawable show = getContext().getResources().getDrawable(resourceId);

Когда я должен был делать:

Drawable show = AppCompatResources.getDrawable(getContext(), resourceId);

Надеюсь, это поможет кому-то!