palette
直接讲解Palette的使用步骤和实例,补充说明Palette的几个注意点。
转载请注明链接:https://blog.csdn.net/feather_wch/article/details/80066384
Palette详解
版本:2018/4/24-1
- Palette详解
- 注意点
- 参考资料
1、Palette是什么?
- Palette是一个可以从图片(Bitmap)中提取颜色的帮助类.
- 可以使UI更加美观,根据图片动态的显示相应的颜色。
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的解决办法
柔和色getLightMutedSwatch()
基本上不会为NULL
。活力色getLightVibrantSwatch()
相关API对于部分图片可能为NULL
。可以参考上面实例
,先获取活力色
如果没有,则去获取柔和色
。确保最大概率获取到颜色
2、颜色的选取
- 建议
活力色使用一般色:getVibrantSwatch
(不是亮色也不是深色),并且标题颜色
采用getBodyTextColor
,一般为白色比较美观。- 建议
柔和色采用深色:getDarkMutedSwatch
,并且标题颜色
使用getBodyTextColor
,一般也是白色.
参考资料
- android Palette使用详解
相关阅读
我想用简单直接的文字,详尽的讲述猫眼电影的UGC是怎么做起来的。不说什么方法论,只说遇到过什么问题,是怎么分析和解决的。按照逻辑
webservice简介: Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据
android开发之PreferenceScreen使用详解
是在惭愧,学习android也有一段时间了,今天才是第一次接触PreferenceScreen。记录下来,与大家分享。 本文参考:http://lovezhou.iteye.
什么是Telnet?对于Telnet的认识,不同的人持有不同的观点,可以把Telnet当成一种通信协议,但是对于入侵者而言,Telnet只是一种远程登录的
文章从理论到实战,内容会比较长,可有选择的阅读。一、heartbeat的概念 Linux-HA的全称是High-Availability Linux,它是一个开源项