一、Palette 简介
二、导入依赖
要使用调色板库,请将Android支持库安装或更新为24.0.0或更高版本,并按照有关添加支持库的说明将调色板库添加到应用程序开发项目中。
implementation 'androidx.palette:palette:1.0.0'
三、简单使用
创建一个工具类
public class PaletteHelper {
/**
* 获取图片主色调
*
* @param bitmap
* @return
*/
public static void getBitmapColor(final Bitmap bitmap,View view) {
Palette.from(bitmap).maximumColorCount(10).generate(new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(@NonNull Palette palette) {
// List<Palette.Swatch> list = palette.getSwatches();
// int colorSize = 0;
// Palette.Swatch maxSwatch = null;
// for (int i = 0; i < list.size(); i++) {
// Palette.Swatch swatch = list.get(i);
// if (swatch != null) {
// int population = swatch.getPopulation();
// if (colorSize < population) {
// colorSize = population;
// maxSwatch = swatch;
// }
// }
// }
Palette.Swatch s = palette.getDominantSwatch();//独特的一种
Palette.Swatch s1 = palette.getVibrantSwatch(); //获取到充满活力的这种色调
Palette.Swatch s2 = palette.getDarkVibrantSwatch(); //获取充满活力的黑
Palette.Swatch s3 = palette.getLightVibrantSwatch(); //获取充满活力的亮
Palette.Swatch s4 = palette.getMutedSwatch(); //获取柔和的色调
Palette.Swatch s5 = palette.getDarkMutedSwatch(); //获取柔和的黑
Palette.Swatch s6 = palette.getLightMutedSwatch(); //获取柔和的亮
if (s1 != null){
//设值shape中的color的颜色
GradientDrawable background = (GradientDrawable) view.getBackground();
background.setColor(s1.getRgb());
// view.setBackgroundColor(maxSwatch.getRgb());
}
}
});
}
四、API介绍
addFilter()
此方法添加一个过滤器,用于指示结果调色板中允许的颜色。传入自己的调色板。筛选并修改其isallowed()方法,以确定从调色板筛选哪些颜色。
maximumColorCount()
此方法设置调色板中的最大颜色数。默认值为16,最佳值取决于源图像。对于风景,最佳值范围为8-16,而带有人脸的图片通常具有介于24-32之间的值。将 Palette.Builder需要更长的时间来产生更多的颜色的调色板。
setRegion()
此方法指示构建器在创建调色板时使用的位图区域。您只能在从位图生成调色板时使用此方法,并且它不会影响原始图像。
addTarget()
此方法允许您通过向Target 构建器添加颜色配置文件来执行自己的颜色匹配 。如果默认值Target不够,高级开发人员可以Target使用创建自己的Target.Builder。