Я хочу заменить все ресурсы .PNG (иконки) в моем проекте с векторными версиями. И для того, чтобы это было максимально эффективно, я хотел избежать дублирования изображений из-за разных состояний (например, для «активных» и «неактивных» версий одного и того же значка).Один векторный ресурс несколько оттенков
Раньше я делал это, используя отдельные PNG-файлы для каждой версии: непрозрачный «активный» и слегка прозрачный «неактивный».
Итак, вопрос в том, можно ли создать некоторые XML, которые ссылаются на одно векторное (желательно) изображение, но применяют к нему разные цвета/оттенки? Или, по крайней мере, для разных значений альфа будет достаточно.
P.S. Моя версия minSDK - 19, если это имеет значение.
UPDATE_01: Я думаю, мне нужно пояснить немного подробнее. Векторный ресурс работает как и ожидалось (все приготовления сделаны для compat lib для рисования векторов по мере необходимости).
Основная проблема заключается в использовании одного векторного значка и нескольких ссылок на него с разными цветами/альфами в отдельных XML-файлах. И при необходимости используйте эти XML (на панели инструментов, кнопок, состояний и т. Д.).
UPDATE_02: Возможно, и пример был бы лучше.
У меня есть вектор рисует на ярлыке «домов», который выглядит следующим образом:
<vector
android:height="24dp"
android:viewportHeight="792.0"
android:viewportWidth="792.0"
android:width="24dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<path
android:fillColor="#FF000000"
android:pathData="..."/>
</vector>
Что я хочу использовать эту же XML вектор вытяжку, но с разными оттенками для «активного» и «неактивного "указывает, например, на вкладки адаптера страницы.
Что я сейчас делаю для этого, дублируем этот XML и меняем его значение «android: fillColor».
Мутирование (в коде) во всех местах, где оно используется, является одним из способов, но не очень хорошо с моей точки зрения. Возможно, есть другой способ? Что-то вроде этого (псевдо):
<image-reference
android:srcDrawable="@drawable/home_icon"
android:tint="@color/activeHomeIcon" />
А затем просто использовать этот «home_icon_ref.xml» везде как вытяжке источника.
Надеюсь, на этот раз мой вопрос станет более понятным.
'DrawableCompat # setTintList' – pskink
API <21, то вам нужно добавить в любой деятельности, где вы используете вектор drawable.- -> static { AppCompatDelegate.setCompatVectorFromResourcesEnabled (true); } –
Думаю, я должен добавить более подробную информацию по теме. См. Мое обновление. –