一、Palette的简单介绍
android-support-v7-palette 里面的Palette是Android L SDK 中的新特性,可以使用 Palette 从图像中提取出突出的颜色(主色调),获取到颜色之后我们再将这个颜色值赋给 ActionBar、状态栏等。从而达到界面色调的统一,使界面美观协调。
原理
通过得到一个bitmap,通过方法进行分析,取出LightVibrantSwatch,DarkVibrantSwatch,LightMutedSwatch,DarkMutedSwatch这些样本,然后得到rgb。
Palette这个类中提取以下突出的颜色
Vibrant (有活力)
Vibrant dark(有活力 暗色)
Vibrant light(有活力 亮色)
Muted (柔和)
Muted dark(柔和 暗色)
Muted light(柔和 亮色)
创建方法
//目标bitmap
Bitmap bm =BitmapFactory.decodeResource(getResources(),R.drawable.kale);
//方法1
Palette.Builder builder = Palette.from(bm);
Palette palette=builder.generate();
//方法2 使用异步
builder.generate(bitmap, new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(Palette palette) {
// Here's your generated palette
}
二、内部嵌套类和常用方法
Palette.Builder
生成器类,生成 Palette 实例。
Palette.Filter
过滤器接口,使 Palette 有更加细腻的颜色过滤
Palette.PaletteAsyncListener
异步加载监听
pattle.Swatch
提供获取结果的色彩样本
from(List switches)
通过预设的 Palette.Swatch 颜色样本列表 来生成 Palette
返回值:static Palette
from(Bitmap bitmap)
通过返回 Palette.Builder 实例来构建 Palette
返回值:static Palette.Builder
generate(Bitmap bitmap,int numColors) 、generate(Bitmap bitmap) 、
该方法已被遗弃,建议用 Palette.Builder 来生成Palette
返回值:static Palette
getColorForTarget(Target target,int defaultColor)
返回一个从目标获取的的 rgb 色值
返回值:int
getDarkMutedColor(int defaultColor)
返回一个柔和的暗色调 rgb 值
返回值:int
getDarkMutedSwatch()
返回一个柔和的暗色调样本类
返回值:Palette.Swatch
getDarkVibrantColor(int defaultColor)
返回一个鲜明的暗色调 rgb 值
返回值:int
getDomainSwatch()
返回一个主色调的样本类
返回值:Palette.Swatch
getLightMutedColor(int defaultColor)
返回一个柔和的亮色调颜色 rgb
返回值:Palette.Swatch
getLightVibrantSwatch()
返回一个鲜明的亮色调样本类
返回值:Palette.Swatch
三、使用样本(swatch)
创建完一个实例之后,我们还需要得到一种采集的样本(swatch),有6中样本(swatch):
Palette.getVibrantSwatch()
Palette.getDarkVibrantSwatch()
Palette.getLightVibran