android5.0有一种新的功能,就是动态取色。在运行时更具不同的图片动态决定一些背景或者文字的颜色。这是一种很酷的设计,他会使视觉上更具有冲击力和新鲜感,而不像统一色调那样呆板。我们这就来介绍他的用法:
-
使用前需要引入
compile 'com.android.support:palette-v7:23.4.0'
-
Palette是什么?
它能让你从图像中提取突出的颜色。这个类能提取以下突出的颜色:
Vibrant(充满活力的)
Vibrant dark(充满活力的黑)
Vibrant light(充满活力的亮)
Muted(柔和的)
Muted dark(柔和的黑)
Muted lighr(柔和的亮) -
如何使用?
既然是从图片中提取颜色,那么首先我们得告诉它提取的图片
Palette palette=Palette.from(传入Bitmap);
通过上面的函数我们就可获取传入图片的Palette对象,然后我们在调用它的generate()
方法即可获取取色过后的Palette。
该方法还有一个重载的方法,public AsyncTask<Bitmap, Void, Palette> generate(final PaletteAsyncListener listener)
,这是异步的方法在UI线程中可以使用这种。 -
Palette 的属性
Palette.Swatch是一个提取颜色的样本,通过该类可以提取到包含了我们需要的颜色内容
返回一个有活力的颜色. Palette.getVibrantSwatch()
返回一个有活力的暗色. Palette.getDarkVibrantSwatch()
返回一个有活力的亮色. Palette.getLightVibrantSwatch()
返回一个柔和的颜色. Palette.getMutedSwatch()
返回一个柔和的暗色. Palette.getDarkMutedSwatch()
返回一个柔和的亮色. Palette.getLightMutedSwatch()
有活力的颜色和有活力的暗色是开发者使用最多的,具体使用哪一种取决于你自己 -
Swatch 属性
getPopulation(): 返回被该样本代表的像素的总数
getRgb(): 返回一个 RGB 颜色值
getHsl(): 返回一个 HSL颜色值.
getBodyTextColor(): 返回一个适合做内容体颜色的颜色值
getTitleTextColor(): 返回一个适合做标题颜色的颜色值
标题的文本颜色会趋向于高透明度和低对比度,字体也会应该大一点,body的文本颜色会趋向于高不透明度和高对比度。
Palette.from(传入的Bitmap).generate(new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(Palette palette) {
//获取充满活力的颜色
Palette.Swatch swatch=palette.getVibrantSwatch();
//获取颜色,可以用来设置背景色
swatch.getRgb();
//获取的颜色可以用来设置给文字
swatch.getTitleTextColor();
}
});