Android Palette使用详解

最近做项目,需要将图标的颜色设置为背景颜色,这时就用到Palette获取图标的颜色,然后进行背景的设置,从而达到图标和背景颜色协调的作用。下面我们来看看Palette怎样使用的?

1、添加依赖

要是用Palette必须先添加依赖,本文使用的是25.0.0的api版本,各位在使用的时候请注意版本之间api的差异。代码如下:

compile 'com.android.support:palette-v7:25.0.0'

2、获取Palette对象

获取Palette有两种方法,同步和异步获取,但是一般使用异步获取,下面我们看看这两种方法:

(1)同步获取

Palette palette = Palette.from(bitmap).generate();

上面的bitmap就是你要取色的图片。

(2)异步获取

Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
    @Override
    public void onGenerated(Palette palette) {

    }   
});

异步获取的时候,Palette对象会通过回调返回,我们可以在回调中进行我们的操作。获取到了Palette对象后,我们就该来获取我们需要的颜色,下面我们来看看使用Palette可以获取到那些颜色怎么获取。

3、Palette可以提取那些颜色

Palette可以提取下面的6种颜色:

  • Vibrant (有活力的)
  • Vibrant dark(有活力的暗色)
  • Vibrant light(有活力的亮色)
  • Muted (柔和的)
  • Muted dark(柔和的暗色)
  • Muted light(柔和的亮色)

获取代码如下:

//获取有活力的颜色
Palette.Swatch swatch= palette.getVibrantSwatch();
if(swatch != null) {
    int color = swatch.getRgb();
}
//获取有活力的暗色
Palette.Swatch swatch= palette.getDarkVibrantSwatch();
if(swatch != null) {
    int color = swatch.getRgb();
}
//获取有活力的亮色
Palette.Swatch swatch= palette.getLightVibrantSwatch();
if(swatch != null) {
    int color = swatch.getRgb();
}
//获取柔和的颜色
Palette.Swatch swatch= palette.getMutedSwatch();
if(swatch != null) {
    int color = swatch.getRgb();
}
//获取柔和的暗色
Palette.Swatch swatch= palette.getDarkMutedSwatch();
if(swatch != null) {
    int color = swatch.getRgb();
}
//获取柔和的亮色
Palette.Swatch swatch= palette.getLightMutedSwatch();
if(swatch != null) {
    int color = swatch.getRgb();
}

从上面我们可以看出,通过Palette获取到了Palette的内部类的Swatch对象,然后通过Swatch的对象的getRgb() 方法获取出颜色。注意在获取颜色之前我们一定要对Swatch进行非空判断,因为可能获取不到你指定的颜色。其实在Swatch中不止有获取颜色的方法,它里面总共包含了5个获取方法,分别是:

//图片中的像素数量
swatch.getPopulation()

//颜色的RBG值
swatch.getRgb()

//颜色的HSL值
swatch.getHsl()

//内容文字的颜色值
swatch.getBodyTextColor()

//标题文字的颜色值
swatch.getTitleTextColor()

通过上面的方法我们可以获取到我们想要的各种颜色,从而实现图片界面的协调统一。

你可能感兴趣的:(android)