Palette的颜色拾取使用

使用Palette可以让我们从一张图片中拾取颜色,将拾取到的颜色赋予ActionBar,StatusBar以及背景色可以让界面色调实现统一
依赖

compile 'com.android.support:palette-v7:23.0.0+'  

Palette提供的API
获取Palette对象,以下是同步和异步使用方式:-- 传入Bitmap即可

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.palette);
//同步获取,需要在子线程中使用
Palette palette = Palette.from(bitmap).generate();
//异步获取,可以在主线程中使用
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
    //获取颜色的样本对象
    @Override
    public void onGenerated(Palette palette) {
        //拿到palette对象
    }
});

获取采样对象---有活力颜色的

Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();
得到Palette对象后,获取其中的颜色,颜色对应如下:
vibrant - //有活力的颜色
        lightVibrant - //有活力的亮色
        darkVibrant - //有活力的暗色
        muted - //柔和暗淡的颜色
        lightMuted - //柔和的亮色
        darkMuted - //柔和的暗色
        // 获取指定颜色的采样对象,获取采样得到的颜色:
        //我们可以直接使用palette获取指定颜色:
        palette.getLightMutedColor(defaultColor);
//一般也可以先获取采样对象Swatch,从Swatch中获取我们需要的颜色:

采样对象Swatch提供了以下方法来获取颜色

swatch.getPopulation()
//该样本表示的像素量: the amount of pixels which this swatch represents.

swatch.getRgb():
//该颜色的RGB值。the RGB value of this color.
swatch.getHsl()
//the HSL value of this color,即色相,饱和度,明度.
swatch.getBodyTextColor()
//可以在此颜色之上显示的文本颜色的RGB值。 the RGB value of a text color which can be displayed on top of this color.
swatch.getTitleTextColor()
//可以显示在此颜色顶部的文本颜色的RGB值 the RGB value of a text color which can be displayed on top of this color

使用颜色值

//一般会将getRgb设置给控件背景色,getBodyTextColor()设置给文字颜色
textView.setBackgroundColor(vibrantSwatch.getRgb());
textView.setTextColor(vibrantSwatch.getBodyTextColor());

你可能感兴趣的:(Palette的颜色拾取使用)