Android5.0之Palette调色板

android5.0有一种新的功能,就是动态取色。在运行时更具不同的图片动态决定一些背景或者文字的颜色。这是一种很酷的设计,他会使视觉上更具有冲击力和新鲜感,而不像统一色调那样呆板。我们这就来介绍他的用法:

  1. 使用前需要引入
    compile 'com.android.support:palette-v7:23.4.0'
  2. Palette是什么?
    它能让你从图像中提取突出的颜色。这个类能提取以下突出的颜色:
    Vibrant(充满活力的)
    Vibrant dark(充满活力的黑)
    Vibrant light(充满活力的亮)
    Muted(柔和的)
    Muted dark(柔和的黑)
    Muted lighr(柔和的亮)
  3. 如何使用?
    既然是从图片中提取颜色,那么首先我们得告诉它提取的图片
    Palette palette=Palette.from(传入Bitmap);
    通过上面的函数我们就可获取传入图片的Palette对象,然后我们在调用它的generate()方法即可获取取色过后的Palette。
    该方法还有一个重载的方法,public AsyncTask generate(final PaletteAsyncListener listener),这是异步的方法在UI线程中可以使用这种。
  4. Palette 的属性
    Palette.Swatch是一个提取颜色的样本,通过该类可以提取到包含了我们需要的颜色内容
    返回一个有活力的颜色. Palette.getVibrantSwatch()
    返回一个有活力的暗色. Palette.getDarkVibrantSwatch()
    返回一个有活力的亮色. Palette.getLightVibrantSwatch()
    返回一个柔和的颜色. Palette.getMutedSwatch()
    返回一个柔和的暗色. Palette.getDarkMutedSwatch()
    返回一个柔和的亮色. Palette.getLightMutedSwatch()
    有活力的颜色和有活力的暗色是开发者使用最多的,具体使用哪一种取决于你自己
  5. 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();
    }
});

你可能感兴趣的:(Android5.0之Palette调色板)