Material设计之Palette
Palette是5.0的一个新功能,叫做调色板,其可以从一张Bitmap中提出去颜色值,设置在别的控件上面,这样有利于保持整体风格的一致性,例如下面这张效果图:
根据选择的图片不一样,actionbar的颜色也不同,是不是很协调呢~~。ok,下面来详细的介绍其使用方式:
一、准备阶段
首先要更新最新的support包,更新之后到这个目录(sdk根目录/extras/android/support/v7/palette/libs):
找到里面的jar包,导入到自己的工程中,就搞定了,如果你嫌麻烦,我这里提供jar包:jar包
二、使用阶段
先来看下效果:
palette的使用其实很简单,以前使用的方式为Palette.generate(),更新到最新的sdk方式已经弃用掉了,现在的使用方式一般为:Palette.from(Bitmap bm).generate(Listener)方式。来看一段样例代码:
AsyncTask<Bitmap, Void, Palette> asyn = Palette// 使用Builder得到palette.from(BitmapFactory.decodeResource(getResources(), R.drawable.background))// 开始获取,获取结果在回调方法里返回.generate(new PaletteAsyncListener() {@Overridepublic void onGenerated(Palette palette) {Log.e("", "PaletteAsyncListener");List<Swatch> list = palette.getSwatches();for (Swatch swatch : list) {// 获取对应的字体颜色txtv.setTextColor(swatch.getBodyTextColor());// 获取RGB颜色showColor.setBackgroundColor(swatch.getRgb());// 休眠1秒,这样就可以看清所有的颜色值try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}});
可以发现该方法返回的是一个异步任务,是不是觉得很奇怪呢????其实返回这个是有道理的,因为解析一张图片去获取突出的颜色是一个很耗时的操作,而对于一个耗时的操作来说会影响用户的体验,所以就使用异步任务来完成颜色的解析,当然我们也可以取消这个任务,是不是很神奇呢??该方法的监听接口里面传出一个Palette对象,使用这个对象获取到Swatch,这个类就是一个颜色的样本,我们需要的颜色值都存在这个类里,下面是能从这个类获取到的颜色值:
别的都认识,其中有一个getHsl()可能大家不熟悉,请看词条:HSL色彩模式是工业界的一种颜色标准,是通过对色相(H)、饱和度(S)、明度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,HSL即是代表色相,饱和度,明度三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
当然我们也可以直接使用Palette获取颜色,看下面:
扫描关注我的微信公众号:
其获取到的颜色可以有四种类型:Dark、Light、Muted、Vibrant,分别为暗色、亮色、柔和、鲜亮。获取到颜色值就可以直接使用到想要设置背景的View上面啦~~~~~~~~~~
最后附上Demo:demo下载
Material设计之Palette相关推荐
- Angular: Material Design Angular教程:Material设计 Lynda课程中文字幕
Angular: Material Design 中文字幕 Angular教程:Material设计 中文字幕Angular: Material Design Angular Material是UI组 ...
- 打造 Material 形状主题 | 设计篇
作者 / Liam Spradlin,Material Design 推广工程师 形状,就像颜色和排版一样,对于提升界面的美感和实用性至关重要.但与颜色和排版不同,形状的作用通常颇为微妙.虽然界面的所 ...
- Android(Lollipop/5.0) Material Design(六) 使用图像
Material Design列 Android(Lollipop/5.0) Material Design(一) 简单介绍 Android(Lollipop/5.0) Material Design ...
- 不懂设计的产品不是好开发
点击上方蓝字关注我,知识会给你力量 通过这篇文章,我将向大家介绍下关于设计的一些基本知识,让广大开发者在平时的开发中,可以更好的和设计.产品合作(撕逼). 1.Color System 1.1 Mat ...
- 助你快速搭配 Material Design 配色方案的10款Web工具
在设计 Material Design 的过程中你会发现一个很大的问题,那就是如何大胆.灵活的使用色彩组合. Material Design 里的调色板工具将色彩描述为"受大胆排列色块并结合 ...
- ANDROID L——Material Design详解(主题和布局)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...
- 如何为Android上的产品设计一款合适的图标
如 果你已经完成了你的app,你一定会马上向其它人宣布这件事情.但是你需要注意一个很重要的问题,那就是app的图标.你的图标可能在项目启动之 前就已经设计好了,但我不喜欢这样,如果app没有完成实际上 ...
- html按钮样式_一组强大的CSS3 Material 按钮
插件简介 今天我们要给大家带来一组很漂亮的CSS3按钮,按钮的整体风格采用Material设计样式,非常简洁和清新.在这组CSS3按钮中,样式各种各样,有圆形按钮,也有带小图标的按钮,当然颜色也有很多 ...
- Android 5.0+(RecycleView、CardView、Palette)
2019独角兽企业重金招聘Python工程师标准>>> Android L 开发者预览支持库提供两个新的Widgets,RecyclerView和CardView.使用这两个Wid ...
最新文章
- SLAM全栈+三维重建全栈系统学习路线!
- Amazon Aurora 升级, 兼容 PostgreSQL
- 【J2EE】第四章 SpringMVC
- 阶段-关口系统---Stage0发现阶段
- JZOJ 5305. 【NOIP2017提高A组模拟8.18】C
- python语句x 3 3执行_Python 3.x 学习笔记--杂
- 19行代码AC——例题 6-2 铁轨(Rails, UVa 514)——解题报告
- Android—修改button属性
- phpnow 更改mysql data文件夹路径
- CF995A Tesla
- 【SpringBoot_ANNOTATIONS】自动装配 01 @Autowired @Qualifier @Primary
- 三种获取当前时间戳的方式
- Richpedia: A Large-Scale, Comprehensive Multi-Modal Knowledge Graph
- Java算法每日练习
- C++——Hook教程[1]:虚函数表(VMT)Hook
- 一文读懂MySQL常用语法
- 哥去微软面试,第一句话就被…
- 编程之余对人品的感悟
- 人工智能时代下,Python与C/C++谁将成为人工智能核心算法选择?
- 利用Python实现视频号自动赚钱一条龙