2019独角兽企业重金招聘Python工程师标准>>>

Palette介绍

Palette是Google在5.0中引入的来获取bitmap颜色值的一个工具类,为了兼容以前的版本,所以放在Support v7 Library中,在使用该类之前,需要在gradle中添加引用。Palette顾名思义调色板, Palette的作用是可以从图像中提取图片的颜色。我们可以把提取的颜色融入到App UI中,可以使UI风格更加美观融洽。
Palette可以提取的颜色如下

  • Vibrant
  • Vibrant Dark
  • Vibrant Light
  • Muted
  • Muted Dark
  • Muted Light

通过Palette对象获取到六个样本swatch

Palette.Swatch s = p.getVibrantSwatch();       //获取到充满活力的这种色调
Palette.Swatch s = p.getDarkVibrantSwatch();    //获取充满活力的黑
Palette.Swatch s = p.getLightVibrantSwatch();   //获取充满活力的亮
Palette.Swatch s = p.getMutedSwatch();           //获取柔和的色调
Palette.Swatch s = p.getDarkMutedSwatch();      //获取柔和的黑
Palette.Swatch s = p.getLightMutedSwatch();    //获取柔和的亮

swatch对象对应的颜色方法

  • getPopulation(): 像素的数量
  • getRgb(): RGB颜色
  • getHsl(): HSL颜色
  • getBodyTextColor(): 用于内容文本的颜色
  • getTitleTextColor(): 标题文本的颜色

集成Palette

在使用该类之前,需要在gradle中添加引用

dependencies {compile 'com.android.support:palette-v7:25.3.0'
}

Palette是一个调色板,通过传入一个bitmap对象来获取一个颜色列表,

首先要获取一个Palette实例,

Palette.from(bitmap).generate()
Palette.generate(bitmap)
Palette.generate(bitmap, mMaxColors)

其中maxColor是颜色值的范围,如果是风景画一般范围在10-16之间,如果是人像的话则范围应增加到24,该值默认为16

示例:

Palette p = Palette.from(convertViewToBitmap(view)).generate();
Palette.Swatch swatch = p.getVibrantSwatch();
if (swatch != null) {tvShow.setBackgroundColor(swatch.getRgb());
}public Bitmap convertViewToBitmap(View view) {view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmap bitmap = view.getDrawingCache();return bitmap;
}

这些颜色都有相应的 getter 方法获取。这里要提到一个 Swatch (样品)类。对 Palette 对象所有颜色相关的操作都可以通过 Swatch 类间接获取。像上面这六种色调,都能通过对应的 Swatch 对象获取到。比如,获取图片主题色,可以直接从 palette 对象中获取:

int color = palette.getDominantColor(ContextCompat.getColor(mContext, R.color.blue));

也可以通过 swatch 对象间接获取:

int color = palette.getDominantSwatch().getRgb();

差别在于,Swatch 对颜色的相关信息做了一个封装处理。通过 Swatch 对象,我们可以获取颜色的 RGB、HSL 等值,和当前颜色在图片中的占比。更重要的一点是,能够获取适合显示在当前颜色背景中的内容色,比如文本标题颜色等。不得不说,Google 想的真周到,并且在源码设计上也是非常独到。

转载于:https://my.oschina.net/ososchina/blog/1789460

Android Palette颜色提取相关推荐

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

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

  2. 主题颜色提取 ——— Palette

    Palette 调色板 Palette 是 Android L SDK 中的新特性.可以使用 Palette 从图像中提取出突出的颜色(主色调),获取到颜色之后我们再将这个颜色值赋给 ActionBa ...

  3. android Palette使用详解

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

  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 view,Android Material Design系列之Palette

    今天我们讲的这个Palette非常好用,也非常好玩. Palette的作用是从图像中提取突出的颜色,这样我们可以根据提取到的色值把它赋给Toolbar,标题,状态栏等,可以使我们的整个界面色调统一,效 ...

  9. Matplotlib科研画图.调色盘颜色提取和更改

    Matplotlib科研画图.调色盘颜色提取和更改 #提取调色盘颜色 palette#提取seaborn调色盘颜色 plt.style.use('default') #清空之前调色盘更改 sns.se ...

最新文章

  1. python turtle画气球-micro:bit + LoRa 实现气球追踪
  2. 有关贝祖定理的一个小问题
  3. 创建一个dynamics CRM workflow (三) - Creating Configuration Entity for Custom Workflow
  4. 【转载】12306铁道部订票网站性能分析
  5. Python学习(三)基础
  6. 小程序 input自动换行_直播 | 最实用的微信小程序自动化测试技术独家揭秘
  7. [置顶] Z-STACK之OSAL_Nv非易失性存储解读上
  8. 用Visual C++实现远程线程嵌入技术
  9. Nginx利用nginx_upstream_check_module检查后端健康情况
  10. java jsp 乱码_JAVA/JSP 中文乱码
  11. STM32 CANFD 基础知识
  12. 抽样与抽样分布——中心极限定理、点估计
  13. 狂神Springboot笔记
  14. 网红品牌的“敦刻尔克大撤退”
  15. 用Dual-Thrust策略回测CTA
  16. 高德地图--- 会动的小汽车(行动轨迹回放)demo效果(整理)
  17. python3 100例(安安)
  18. 手写一个淘宝、京东的搜索流式布局FlowLayout
  19. 【转载】 Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
  20. MySQL视频学习笔记

热门文章

  1. python3 yield_Python3基础 yield 在函数中的用法示例
  2. jvm面试之 Java内存模型之线程独占部分,线程共享部分,常问问题分析
  3. Go工程化 - 手摸手带你理解依赖注入
  4. spl_autoload_register 注册自己的自动加载函数(__autoload())
  5. nginx upstream 模块详解
  6. redis专题:数据库和redis缓存一致性解决方案
  7. centos6.5搭建git服务器 win10 安装git客户端连接 和遇到的问题+解决方式
  8. linux实用小功能
  9. Hystrix原理讲解
  10. fedora16设置root登录