Android 中的 tint 着色器
使用 tint 着色器,结合矢量图,可以用一张图片,适配多中颜色(前提是纯色的)。就像下图的效果:
另外,还可以更进一步的实现 selector。
主要参考的文章:
1、安卓着色器(tint)使用实践。
2、从使用到源码,细说 Android 中的 tint 着色器
在具体的使用中,需要注意的是系统兼容的问题,因为是从 API 21 才开始引入的,如果要在 6.0 以前的版本使用,那么就需要使用 DrawableCompat
类。
以及,需要注意 Draeable 为节省共享同一个 constant state 的问题。
还有一个问题,那就是如果 xml 文件中使用 android:tint
为 View 设置了着色器的颜色,那么在 Java 文件用代码为该 View 再次设置 tint 将不会生效。(暂时不能排除 SDK 版本以及测试机版本的影响)
在使用代码实现 selector 的时候,对应的 View 需要设置 android:clickable="true"
。