功能需求
一个页面中顶部显示一张图片(图片从网络加载),此时需要根据图片的颜色来动态调整顶部标题栏的背景色。
技术要求
Android 调色板支持库
实现过程
1、添加调色板支持库
dependencies{
implementation 'androidx.palette:palette:1.0.0'
}
2、创建调色板实例
这里有 2 中方式来创建
/**
* 同步方式
*/
fun createPaletteSync(bitmap: Bitmap): Palette = Palette.from(bitmap).generate()
/**
* 异步方式
*/
fun createPaletteAsync(bitmap: Bitmap) {
Palette.from(bitmap)
.generate { palette ->
//TODO(业务逻辑)
}
}
3、获取颜色
调色板为我们提供了 6 颜色的配置文件,分别为
Light Vibrant
Vibrant
Dark Vibrant
Light Muted
Muted
Dark Muted
我们可以通过 getColor() 来获取,例如 Light Vibrant 为 getLightVibrantColor(defaultColor),方法里要传一个默认的颜色,因为可能为空。
Palette 类还会为每个颜色配置文件生成 Palet