是5.0的一个新功能,叫做调色板,其可以从一张中提出去颜色值,设置在别的控件上面,这样有利于保持整体风格的一致性,例如下面这张效果图:
![Material设计之Palette](http://img.gansulong.com/230625/120S5D56-0.jpg)
文章插图
根据选择的图片不一样,的颜色也不同,是不是很协调呢~~ 。ok,下面来详细的介绍其使用方式:
一、准备阶段
首先要更新最新的包,更新之后到这个目录(sdk根目录////v7//libs):
![Material设计之Palette](http://img.gansulong.com/230625/120S55595-1.png)
文章插图
![Material设计之Palette](http://img.gansulong.com/230625/120S5E10-2.jpg)
文章插图
找到里面的jar包,导入到自己的工程中,就搞定了,如果你嫌麻烦,我这里提供jar包:jar包
二、使用阶段
先来看下效果:
![Material设计之Palette](http://img.gansulong.com/230625/120S55556-3.gif)
文章插图
的使用其实很简单,以前使用的方式为.(),更新到最新的sdk方式已经弃用掉了,现在的使用方式一般为:.from( bm).()方式 。来看一段样例代码:
【Material设计之Palette】
AsyncTask asyn = Palette// 使用Builder得到palette.from(BitmapFactory.decodeResource(getResources(), R.drawable.background))// 开始获取,获取结果在回调方法里返回.generate(new PaletteAsyncListener() {@Overridepublic void onGenerated(Palette palette) {Log.e("", "PaletteAsyncListener");List 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();}}}});
可以发现该方法返回的是一个异步任务,是不是觉得很奇怪呢????其实返回这个是有道理的,因为解析一张图片去获取突出的颜色是一个很耗时的操作,而对于一个耗时的操作来说会影响用户的体验,所以就使用异步任务来完成颜色的解析,当然我们也可以取消这个任务,是不是很神奇呢??该方法的监听接口里面传出一个对象,使用这个对象获取到,这个类就是一个颜色的样本,我们需要的颜色值都存在这个类里,下面是能从这个类获取到的颜色值:
![Material设计之Palette](http://img.gansulong.com/230625/120S5C07-4.png)
文章插图
别的都认识,其中有一个()可能大家不熟悉,请看词条:HSL色彩模式是工业界的一种颜色标准,是通过对色相(H)、饱和度(S)、明度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,HSL即是代表色相,饱和度,明度三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一 。
当然我们也可以直接使用获取颜色,看下面:
![Material设计之Palette](http://img.gansulong.com/230625/120S5O53-5.png)
文章插图
- 闯王李自成宝藏之谜:到底流落到了哪里呢
- 大月氏后裔遗留中东地区与当地通婚,形成了阿富汗的三大民族之一
- 崇祯帝三个皇子去哪了?三个皇子下落成千古之谜
- 褒姒身世之谜:宫女怀孕四十一年才生下她
- 如何合理的设计B端产品经理的考核目标?
- PLC算法系列之数值微分器
- 历史揭秘:李自成与崇祯帝互断龙脉之秘闻
- 慈禧断气之前做了一件叫她被人骂了上百年的事
- 难言之隐:太平天国嫔妃无数为何没有太监
- 基于Android的航班查询系统的设计与实现