2016-11-25 1 views
0

Я хочу заменить все ресурсы .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» везде как вытяжке источника.

Надеюсь, на этот раз мой вопрос станет более понятным.

+1

'DrawableCompat # setTintList' – pskink

+0

API <21, то вам нужно добавить в любой деятельности, где вы используете вектор drawable.- -> static { AppCompatDelegate.setCompatVectorFromResourcesEnabled (true); } –

+0

Думаю, я должен добавить более подробную информацию по теме. См. Мое обновление. –

ответ

0

Вместо использования в отдельных ресурсов XML можно изменить программно в вашем Java code.Follow this SO post

+0

Если я правильно понимаю, мне нужно будет добавить мутацию в коде для каждого представления, которое использует это изображение во всех фрагментах и ​​действиях. Не очень удобно. –

Смежные вопросы