根据图片获取主题色

Palette

引入

implementation 'com.android.support:palette-v7:27.1.1'

使用

Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
                    @Override
                    public void onGenerated(Palette palette) {
                        //第一种方式,取最活跃的颜色,没取到则用白色
                        Palette.Swatch swatch = palette.getVibrantSwatch();
                        if (swatch != null) {
                            imageBg.setBackgroundColor(swatch.getRgb());
                        } else {
                            imageBg.setBackgroundColor(Color.WHITE);
                        }

                        //第二种方式,取最活跃的颜色,没取到则用白色
   //imageBg.setBackgroundColor(palette.getVibrantColor(Color.WHITE));
                    }
}

取色的API

                        // 获取到柔和的深色的颜色(可传默认值)
                        palette.getDarkMutedColor(Color.WHITE);
                        // 获取到活跃的深色的颜色(可传默认值)
                        palette.getDarkVibrantColor(Color.WHITE);
                        // 获取到柔和的明亮的颜色(可传默认值)
                        palette.getLightMutedColor(Color.WHITE);
                        // 获取到活跃的明亮的颜色(可传默认值)
                        palette.getLightVibrantColor(Color.WHITE);
                        // 获取图片中最活跃的颜色(也可以说整个图片出现最多的颜色)(可传默认值)
                        palette.getVibrantColor(Color.WHITE);
                        // 获取图片中一个最柔和的颜色(可传默认值)
                        palette.getMutedColor(Color.WHITE);

结合Glide使用

        Glide.with(getContext()).load(src).listener(new RequestListener() {
            @Override
            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) {
                imageBg.setBackgroundColor(Color.WHITE);
                return false;
            }

            @Override
            public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) {
                Bitmap bitmap =((BitmapDrawable)resource).getBitmap();
                Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
                    @Override
                    public void onGenerated(Palette palette) {
    imageBg.setBackgroundColor(palette.getVibrantColor(Color.WHIT));
                    }
                });
                return false;
            }
        }).into(image);

 

你可能感兴趣的:(图片主题色,图片主题色)