Моей целью было сделать так, чтобы у кнопки были выбранные и нажатые состояния на другом альфа-канале, но с использованием одного и того же (png) ресурса и влиянием на как можно меньше файлов.
Мое решение аналогично изменению альфы в BitmapDrawable - но оно делает это с помощью селектора, поэтому затрагивается только один файл.
Используйте функцию оттенка Bitmap, помните, что оттенок будет окрашивать существующие пиксели, поэтому используйте белый цвет.
Например, # 80FFFFFF - сохранить цвет как оригинальный, но уменьшить альфа на 50%
Это также может быть использовано для изменения цвета значка при нажатии.
Это мой нарисованный XML-файл:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<bitmap
android:src="@drawable/ic_camera"
android:tint="#80FFFFFF">
</bitmap>
</item>
<item android:state_pressed="true">
<bitmap
android:src="@drawable/ic_camera"
android:tint="#80FFFFFF">
</bitmap>
</item>
<item>
<bitmap
android:src="@drawable/ic_camera">
</bitmap>
</item>
</selector>