Android技术我爱编程

Android5.0之 Palette 取色

2017-07-21  本文已影响23人  子丿龙

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();
    }
});
上一篇下一篇

猜你喜欢

热点阅读