Android Lollipop 新特性 - Palette

Android Lollipop 新特性 - Palette

Palette 可以从一张图片中提取颜色,我们可以把提取的颜色融入到App UI中,可以使UI风格更加美观融洽。比如,我们可以从图片中提取颜色设置给ActionBar做背景颜色,这样ActionBar的颜色就会随着显示图片的变化而变化。

Palette可以提取的颜色如下:

  • Vibrant (有活力的)
  • Vibrant dark(有活力的 暗色)
  • Vibrant light(有活力的 亮色)
  • Muted (柔和的)
  • Muted dark(柔和的 暗色)
  • Muted light(柔和的 亮色)

使用方法

我们要想使用Palette,需要导入Palette的兼容库,Gradle 中添加下面依赖。

compile 'com.android.support:palette-v7:21.0.0'

第一步,我们需要通过一个Bitmap对象来生成一个对应的Palette对象。 Palette 提供了四个静态方法用来生成对象。

  • Palette generate(Bitmap bitmap)
  • Palette generate(Bitmap bitmap, int numColors)
  • generateAsync(Bitmap bitmap, PaletteAsyncListener listener)
  • generateAsync(Bitmap bitmap, int numColors, final PaletteAsyncListener listener)

不难看出,生成方法分为generate(同步)和generateAsync(异步)两种,如果图片过大使用generate方法,可能会阻塞主线程,我们更倾向于使用generateAsync的方法,其实内部就是创建了一个AsyncTaskgenerateAsync方法需要一个PaletteAsyncListener对象用于监听生成完毕的回调。除了必须的Bitmap参数外,还可以传入一个numColors参数指定颜色数,默认是 16。

第二步,得到Palette对象后,就可以拿到提取到的颜色值

  • Palette.getVibrantSwatch()
  • Palette.getDarkVibrantSwatch()
  • Palette.getLightVibrantSwatch()
  • Palette.getMutedSwatch()
  • Palette.getDarkMutedSwatch()
  • Palette.getLightMutedSwatch()

第三步,使用颜色,上面get方法中返回的是一个 Swatch 样本对象,这个样本对象是Palette的一个内部类,它提供了一些获取最终颜色的方法。

  • getPopulation(): 样本中的像素数量
  • getRgb(): 颜色的RBG值
  • getHsl(): 颜色的HSL值
  • getBodyTextColor(): 主体文字的颜色值
  • getTitleTextColor(): 标题文字的颜色值

通过 getRgb() 可以得到最终的颜色值并应用到UI中。getBodyTextColor() 和 getTitleTextColor() 可以得到此颜色下文字适合的颜色,这样很方便我们设置文字的颜色,使文字看起来更加舒服。

实例代码

// 此方法可能会阻塞主线程,建议使用异步方法
Palette palette = Palette.generate(bitmap);
// 异步提取Bitmap颜色 Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() { @Override public void onGenerated(Palette palette) { // 提取完毕 // 有活力的颜色 Palette.Swatch vibrant = palette.getVibrantSwatch(); // 有活力的暗色 Palette.Swatch darkVibrant = palette.getDarkVibrantSwatch(); // 有活力的亮色 Palette.Swatch lightVibrant = palette.getLightVibrantSwatch(); // 柔和的颜色 Palette.Swatch muted = palette.getMutedSwatch(); // 柔和的暗色 Palette.Swatch darkMuted = palette.getDarkMutedSwatch(); // 柔和的亮色 Palette.Swatch lightMuted = palette.getLightMutedSwatch();   // 使用颜色 // 修改Actionbar背景颜色 getActionBar().setBackgroundDrawable(new ColorDrawable(vibrant.getRgb())); // 修改文字的颜色 mTextView.setTextColor(vibrant.getTitleTextColor()); ... // 根据需求选择不同效果的颜色应用 });

效果

Palette基本用法相关推荐

  1. android palette组件用法,Android Support Palette使用详解

    使用Palette API选择颜色 良好的视觉设计是app成功所必不可少的, 而色彩设计体系是设计的基础构成. Palette包是支持包, 能够从图片中解析出突出的颜色, 从而帮助你创建出视觉迷人的应 ...

  2. android palette组件用法,Palette颜色提取使用详解

    如果你试过android Lollipop的sdk,你可能注意到了Palette.Palette从图像中提取突出的颜色,这样可以把色值赋给ActionBar.或者其他,可以让界面整个色调统一. 创建P ...

  3. android palette组件用法,Android Material Design:使用Palette优化界面色彩搭配。

    我写过一篇博客介绍了常用Material Design控件的使用. http://www.jianshu.com/p/776cc6329fff 本想把大部分的Material Design的知识点写到 ...

  4. android palette组件用法,android Palette使用详解

    Palette是一个可以从图片(Bitmap)中提取颜色的帮助类,可以使UI更加美观,根据图片动态的显示相应的颜色.现在最新的api是在版本22.0.0添加的,本篇文章也是使用的22.0.0的api版 ...

  5. android palette组件用法,Android--Palette基本使用

    Palette是一个类似调色板的工具类,根据传入的bitmap,提取出主体颜色,使得图片和颜色更加搭配,界面更协调.Palette 可以从一张图片中提取颜色,我们可以把提取的颜色融入到App UI中, ...

  6. android palette组件用法,Android Palette(调色板)的使用

    一.Palette的简单介绍 android-support-v7-palette 里面的Palette是Android L SDK 中的新特性,可以使用 Palette 从图像中提取出突出的颜色(主 ...

  7. android palette组件用法,android Palette调色板使用详解

    Palette是一个可以从图片(Bitmap)中提取颜色的帮助类,可以使UI更加美观,根据图片动态的显示相应的颜色.现在最新的api是在版本22.0.0添加的,本篇文章也是使用的22.0.0的api版 ...

  8. Android Palette 提取图片的主色调

    博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此 博主:威威喵 | 博客主页:https://blog.csdn.net/smil ...

  9. android取图片颜色代码,Android Palette 提取图片的主色调

    博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此 博主:威威喵 | 博客主页:https://blog.csdn.net/smil ...

最新文章

  1. Java网络编程基础(三)---基于UDP编程
  2. 基于单目视觉的智能车辆视觉导航系统设计
  3. Linux ls 命令详解
  4. PMcaff-运营 | 用户运营中的认知丶考虑丶行动模型
  5. WAP2.0开发规范及原则
  6. [蓝桥杯2019初赛]旋转-找规律
  7. php多条件筛选顺序_php多条件组合筛选
  8. Html去掉链接虚线边框
  9. vscode怎么连接mysql_如何在VSCode连接使用MySQL数据库?
  10. Android 向右滑动销毁(finish)Activity, 随着手势的滑动而滑动的效果
  11. java-Apache Commons IO
  12. WWDC21 定档,苹果眼镜成最大猜想
  13. 关于Handler和子线程的记录
  14. Spring Framework 常用工具类一
  15. 数据源为XML的GridView操作
  16. python数据模型和各种实用小技巧,保证让你更PYTHONIC
  17. rstp 转hls_海康大华RTSP转HLS直播
  18. stm32中的ISP一键下载原理分析
  19. 基于Java的实现宠物管理系统的设计与实现
  20. 2022韦莱韬悦人力资源管理季刊

热门文章

  1. python读取docx中表格 图片_python 解析docx文档的方法,以及提取插入的文本对象和图片...
  2. 细数那些不起眼但利润很大的赚钱生意
  3. 大家在谈租房时都在谈些什么?--豆瓣租房小组词云图
  4. 区块链工程师需要掌握哪些技能?
  5. 截取图片中的一部分,注意事项
  6. IEEE 802.1Qav( 802.1Q clause34) Forwarding and queuing for time-sensitive streams
  7. mysql 证书双向认证_https证书双向验证
  8. 3个步骤,轻松画好页面流程图
  9. linux上用户管理,掌握Linux上的用户管理
  10. NFT 改变社会的 5 种方式