Android Jetpack: 调色板Palette

一、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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值