最近做项目,需要将图标的颜色设置为背景颜色,这时就用到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()
通过上面的方法我们可以获取到我们想要的各种颜色,从而实现图片界面的协调统一。