android palette组件用法,Android Material Design:使用Palette优化界面色彩搭配。
我写过一篇博客介绍了常用Material Design控件的使用。
http://www.jianshu.com/p/776cc6329fff
本想把大部分的Material Design的知识点写到一个博客中,结果无奈东西太多只好分开写。这篇博客介绍的是Palette调色板的使用。
源码地址:https://github.com/AxeChen/MaterialDesignSimple
示例代码(由于提交中不慎修改了其他module的代码,所以用红框标出了)
1、Palette的基本理解
Palette是调色版的意思,用它能获取到Bitmap中一些活跃的颜色,其他控件通过设置这些颜色来优化界面色彩搭配。
效果图:
没有使用Palette调色时。Toolbar和TabLayout等控件是蓝色,和图片很明显不协调。
没使用Palette调色效果图
使用Palette调色后。Toolbar、TabLayout状态栏等会根据图片展示比较搭配的颜色。
注意:Palette并不只适用于我写的示例,Palette应用的情况很多,我这里只用作效果展示。
使用Palette调色效果图
2、Palette的基本使用
Palette使用起来非常简单,没有比较复杂的步骤。
2.1、导入依赖
compile 'com.android.support:palette-v7:23.4.0'
2.2、主要方法
调用Palette.from() 方法将bitmap传入,然后在回调中获取颜色值。
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(Palette palette) {
}
});
通过Palette 可以获取到一些颜色值。
// 获取到柔和的深色的颜色(可传默认值)
palette.getDarkMutedColor(Color.BLUE);
// 获取到活跃的深色的颜色(可传默认值)
palette.getDarkVibrantColor(Color.BLUE);
// 获取到柔和的明亮的颜色(可传默认值)
palette.getLightMutedColor(Color.BLUE);
// 获取到活跃的明亮的颜色(可传默认值)
palette.getLightVibrantColor(Color.BLUE);
// 获取图片中最活跃的颜色(也可以说整个图片出现最多的颜色)(可传默认值)
palette.getVibrantColor(Color.BLUE);
// 获取图片中一个最柔和的颜色(可传默认值)
palette.getMutedColor(Color.BLUE);
// ... 这里省略其他的方法。
以上我都是通过源码中的注释来获取这些方法的基本含义的。Palette的方法并不多,大部分都是返回颜色的方法,这里不再多介绍。
以上方法的效果图:
效果图
2.3、示例代码
示例代码中的TabLayout和Viewpager的联用,我就不介绍了。如果不知道TabLayout和Viewpager的联用可以看我的另一篇写Material Design控件的博客:http://www.jianshu.com/p/776cc6329fff
唯一注意的地方就是使用了不同的获取颜色的方法。
palette.getVibrantSwatch():获取颜色样本。在这里做了非空判断,如果获取的颜色样本为空就从所有的样本中获取一个样本。
vibrant.getRgb():从样本中获取颜色的RGB值。获取到RGB值之后可以直接给其他控件使用这个值,或者稍微调整这个值的颜色再使用。
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(Palette palette) {
Palette.Swatch vibrant = palette.getVibrantSwatch();
if (vibrant == null) {
for (Palette.Swatch swatch : palette.getSwatches()) {
vibrant = swatch;
break;
}
}
// 这样获取的颜色可以进行改变。
int rbg = vibrant.getRgb();
// ... 省略一些无关紧要的代码
tabLayout.setBackgroundColor(rbg);
toolbar.setBackgroundColor(rbg);
if (Build.VERSION.SDK_INT > 21) {
Window window = getWindow();
//状态栏改变颜色。
int color = changeColor(rbg);
window.setStatusBarColor(color);
}
}
});
// 对获取到的RGB颜色进行修改。(涉及到位运算,我也不是很懂这块)
private int changeColor(int rgb) {
int red = rgb >> 16 & 0xFF;
int green = rgb >> 8 & 0xFF;
int blue = rgb & 0xFF;
red = (int) Math.floor(red * (1 - 0.2));
green = (int) Math.floor(green * (1 - 0.2));
blue = (int) Math.floor(blue * (1 - 0.2));
return Color.rgb(red, green, blue);
}
3、最后
android palette组件用法,Android Material Design:使用Palette优化界面色彩搭配。相关推荐
- android palette组件用法,Android Support Palette使用详解
使用Palette API选择颜色 良好的视觉设计是app成功所必不可少的, 而色彩设计体系是设计的基础构成. Palette包是支持包, 能够从图片中解析出突出的颜色, 从而帮助你创建出视觉迷人的应 ...
- android palette组件用法,android Palette使用详解
Palette是一个可以从图片(Bitmap)中提取颜色的帮助类,可以使UI更加美观,根据图片动态的显示相应的颜色.现在最新的api是在版本22.0.0添加的,本篇文章也是使用的22.0.0的api版 ...
- android palette组件用法,Android Palette(调色板)的使用
一.Palette的简单介绍 android-support-v7-palette 里面的Palette是Android L SDK 中的新特性,可以使用 Palette 从图像中提取出突出的颜色(主 ...
- android palette组件用法,android Palette调色板使用详解
Palette是一个可以从图片(Bitmap)中提取颜色的帮助类,可以使UI更加美观,根据图片动态的显示相应的颜色.现在最新的api是在版本22.0.0添加的,本篇文章也是使用的22.0.0的api版 ...
- android图片显示组件,Android可循环显示图像的Android Gallery组件用法实例
本文实例分析了Android可循环显示图像的Android Gallery组件用法.分享给大家供大家参考,具体如下: Gallery组件主要用于横向显示图像列表,不过按常规做法.Gallery组件只能 ...
- html5好看的注册页面设计,Material Design风格用户注册登录界面设计
这是一款Material Design风格用户注册登录界面设计效果.该设计由用户登录,用户注册和忘记密码三个界面组成.设计中的所有元素都以Material Design为基础,整体效果时尚大方. 使用 ...
- 使用Palette优化界面色彩搭配 Jetpack
Palette 动态获取图片的某种颜色.作用请看下面动图 没有添加笔记 ,直接查看 原文:https://www.jianshu.com/p/dfa9aac6143d 我写过一篇博客介绍了常用Mate ...
- android palette组件用法,Palette颜色提取使用详解
如果你试过android Lollipop的sdk,你可能注意到了Palette.Palette从图像中提取突出的颜色,这样可以把色值赋给ActionBar.或者其他,可以让界面整个色调统一. 创建P ...
- android palette组件用法,Android--Palette基本使用
Palette是一个类似调色板的工具类,根据传入的bitmap,提取出主体颜色,使得图片和颜色更加搭配,界面更协调.Palette 可以从一张图片中提取颜色,我们可以把提取的颜色融入到App UI中, ...
最新文章
- 2021-04-08 Halcon进阶【02】 几何计量【多目标测量】
- 易语言逐条读access数据_易语言对ACCESS数据库基础(适合新手)
- cmake 学习笔记(三) (转)
- openresty开发系列33--openresty执行流程之2重写赋值阶段
- 如何简化临时内存的分配与释放
- vscode python单步调试_调试期间VSCode python“未验证断点”?
- 加载程序中数据库账号密码加密策略wallet_04
- easyuefi只能在基于uefi启动的_云计算学习体系-1.1-计算机硬件基础扩展知识BIOS/UEFI/MBR/GPT...
- Python二叉树的三种深度优先遍历
- mysql大项目:新闻管理系统
- Sasha and a Very Easy Test CodeForces - 1109E (数学,线段树)
- canvas 封装一个自己的 icon 库
- 数据库系统概论(第5版)学习笔记第1章 1.1——数据库系统概论
- C#调用WPS转换WORD,EXCEL,PPT文件为PDF
- 顶级区块链开发人员工具:涉及框架、IDE、安全工具、测试网络、区块链预言机和节点服务
- 学习新方法:帅到没朋友
- 运维派网站数据迁移过程踩到的坑和教训
- JAVA#泛型'学习札记
- Doris入门到精通-阶段一(简介安装使用)
- python matlab 普朗克公式黑体光谱辐射出射度 绘图
热门文章
- leetcode刷题链表
- 2018-8-31安装新版Kali遇到的SSH问题【ssh配置文件没有PermitRootLogin选项】
- www packtpub com电子书网站
- Linux mmap原理
- CentOS7上安装linux QQ
- Tomcat 管理和监控工具 - PSI Probe
- pip豆瓣换源安装opencv
- Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift(BN)
- 人才招聘①期 | 中国电信IT研发中心招聘多个职位
- IDEA03:数据库CDC、Kafka和连接器Debezium配置