必威体育Betway必威体育官网
当前位置:首页 > IT技术

Palette详解

时间:2019-06-26 03:43:09来源:IT技术作者:seo实验室小编阅读:73次「手机版」
 

palette

直接讲解Palette的使用步骤和实例,补充说明Palette的几个注意点。

转载请注明链接:https://blog.csdn.net/feather_wch/article/details/80066384

Palette详解

版本:2018/4/24-1

  • Palette详解
    • 注意点
    • 参考资料

1、Palette是什么?

  1. Palette是一个可以从图片(Bitmap)中提取颜色的帮助类.
  2. 可以使UI更加美观,根据图片动态的显示相应的颜色。

    效果图

    DEMO

2、Palette的使用步骤

1、引入依赖包implementation 'com.android.support:palette-v7:26.1.0'

2、获取调色板对象

// 同步
Palette p = Palette.from(bitmap).generate();

// 异步
Palette.from(bitmap).generate(new PaletteAsyncListener() {
    public void onGenerated(Palette p) {
        // Use generated instance
    }
});

3、根据调色板获取色样(Palette.Swatch可能为null)

//有活力的
Palette.Swatch vibrant = palette.getVibrantSwatch();
//有活力的,暗色
Palette.Swatch vibrantDark = palette.getDarkVibrantSwatch();
//有活力的,亮色
Palette.Swatch vibrantLight = palette.getLightVibrantSwatch();

//柔和的
Palette.Swatch muted = palette.getMutedSwatch();
//柔和的,暗色
Palette.Swatch mutedDark = palette.getDarkMutedSwatch();
//柔和的,亮色
Palette.Swatch mutedLight = palette.getLightMutedSwatch();

4、色样中获取颜色

//1、样本中的像素数量
int population = vibrant.getPopulation();
//2、颜色的RBG值
int rgb = vibrant.getRgb();
//3、颜色的HSL值
float[] hsl = vibrant.getHsl();
//4、主体文字的颜色值
int bodyTextColor = vibrant.getBodyTextColor();
//5、标题文字的颜色值
int titleTextColor = vibrant.getTitleTextColor();

3、Palette的简单实例(利用Glide获取Bitmap并且获取到Palette)

//获取图片的Bitmap
RequestBuilder<Bitmap> requestBuilder = Glide.with(getApplicationContext()).asBitmap();

requestBuilder.load(datas.get(mPosition).getHeadImg()).into(new SimpleTarget<Bitmap>() {
    @Override
    public void onResourceReady(@NonNull Bitmap bitmap, @Nullable Transition<? super Bitmap> transition) {

        //创建Palette(异步)
        Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
            @Override
            public void onGenerated(Palette palette) {
                //1-获取 靓丽的活力色
                Palette.Swatch vibrant = palette.getVibrantSwatch();
                //2-不存在活力色,获取柔和色
                if(vibrant == null){
                    vibrant = palette.getDarkMutedSwatch();
                }
                //3-设置颜色
                if(vibrant != null){
                    int titleColor = vibrant.getRgb();
                    mCollapsingToolbarLayout.setContentScrimColor(titleColor);
                    mCollapsingToolbarLayout.setCollapsedTitleTextColor(vibrant.getBodyTextColor());
                }
            }
        });

    }
});

注意点

1、Palette.Swatch获取为Null的解决办法

  1. 柔和色getLightMutedSwatch()基本上不会为NULL
  2. 活力色getLightVibrantSwatch()相关API对于部分图片可能为NULL
  3. 可以参考上面实例,先获取活力色如果没有,则去获取柔和色。确保最大概率获取到颜色

2、颜色的选取

  1. 建议活力色使用一般色:getVibrantSwatch(不是亮色也不是深色),并且标题颜色采用getBodyTextColor,一般为白色比较美观。
  2. 建议柔和色采用深色:getDarkMutedSwatch,并且标题颜色使用getBodyTextColor,一般也是白色.

参考资料

  1. android Palette使用详解

相关阅读

以猫眼电影为例,详解UGC平台运营策略

我想用简单直接的文字,详尽的讲述猫眼电影的UGC是怎么做起来的。不说什么方法论,只说遇到过什么问题,是怎么分析和解决的。按照逻辑

Java WebService接口生成和调用 图文详解

webservice简介: Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据

android开发之PreferenceScreen使用详解

是在惭愧,学习android也有一段时间了,今天才是第一次接触PreferenceScreen。记录下来,与大家分享。 本文参考:http://lovezhou.iteye.

telnet 命令使用方法详解,telnet命令怎么用?

什么是Telnet?对于Telnet的认识,不同的人持有不同的观点,可以把Telnet当成一种通信协议,但是对于入侵者而言,Telnet只是一种远程登录的

heartbeat高可用详解

文章从理论到实战,内容会比较长,可有选择的阅读。一、heartbeat的概念  Linux-HA的全称是High-Availability Linux,它是一个开源项

分享到:

栏目导航

推荐阅读

热门阅读