Изменить цвет фигуры, нарисованной программно
Мне нужно изменить цвет фигуры прорисовывается программно...
я использую это
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/app_theme_blue" />
<corners android:radius="8dp" />
<padding
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
</shape>
Здесь я должен изменить цвет android:color="@color/app_theme_blue"
, Помогите мне, пожалуйста.
1 ответ
Да, ты можешь. И это действительно супер просто.
Прежде всего, имейте в виду, что с белыми изображениями легче работать, чтобы иметь нейтральный источник, к которому можно применить цвет (поэтому представьте, что у вас белый контур на прозрачном фоне).
Drawable drw = mContext.getResources().getDrawable(R.id.baseDrawable);
Эта строка просто получает Drawable из ресурсов (baseDrawable - назовите его как хотите).
Далее мы будем использовать перегрузку метода setColorFilter(), которая принимает два параметра: нужный нам цвет и режим наложения.
Обратите внимание, что Drawable является неизменяемым по умолчанию, поэтому мы должны сделать его изменяемым, чтобы применить к нему любые преобразования.
drw.mutate().setColorFilter(finalColor, PorterDuff.Mode.MULTIPLY);
Теперь вы можете сосредоточиться на своем программном обеспечении, без необходимости создавать множество вариаций одного и того же ресурса.
Между прочим, нет никаких требований уровня API, это работает с уровня API 1.
PS:
Это необходимый импорт:
import android.content.Context;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;