Palette是什么?

Palette是Google提供的一个类库,它能让你从图像中提取突出的颜色。这个类能提取以下几种颜色:

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

使用方式:

  • 引入依赖
implementation 'com.android.support:palette-v7:28.0.0'
     *** 根据Url获取Bitmap* img_url 图片的网址*/public void initNetWorkImage(final String imgUrl, final Context context) {new AsyncTask<Void, Void, Bitmap>() {@Overrideprotected Bitmap doInBackground(Void... params) {Bitmap bitmap = null;try {bitmap = Glide.with(context).asBitmap().load(imgUrl)//360*480,原始大小设置为Target.SIZE_ORIGINAL.submit(360, 480).get();} catch (Exception e) {e.printStackTrace();}return bitmap;}@Overrideprotected void onPostExecute(Bitmap bitmap) {Palette.Builder builder = Palette.from(bitmap);//异步任务---可能分析的图片会比较大或者颜色分布比较复杂,会耗时比较久,防止卡死主线程。builder.generate(new Palette.PaletteAsyncListener() {@Overridepublic void onGenerated(Palette palette) {//暗、柔和的颜色int darkMutedColor = palette.getDarkMutedColor(mThemeDefaultColor);//如果分析不出来,则返回默认颜色//暗、柔和int lightMutedColor = palette.getLightMutedColor(mThemeDefaultColor);//暗、鲜艳int darkVibrantColor = palette.getDarkVibrantColor(mThemeDefaultColor);//亮、鲜艳int lightVibrantColor = palette.getLightVibrantColor(mThemeDefaultColor);//柔和int mutedColor = palette.getMutedColor(mThemeDefaultColor);//柔和int vibrantColor = palette.getVibrantColor(mThemeDefaultColor);//获取主颜色int dominantColor = palette.getDominantColor(mThemeDefaultColor);//获取某种特性颜色的样品Palette.Swatch lightVibrantSwatch = palette.getVibrantSwatch();//谷歌推荐的:图片的整体的颜色rgb的混合值---主色调int rgb = lightVibrantSwatch.getRgb();//谷歌推荐:图片中间的文字颜色int bodyTextColor = lightVibrantSwatch.getBodyTextColor();//谷歌推荐:作为标题的颜色(有一定的和图片的对比度的颜色值)int titleTextColor = lightVibrantSwatch.getTitleTextColor();//颜色向量float[] hsl = lightVibrantSwatch.getHsl();//分析该颜色在图片中所占的像素多少值int population = lightVibrantSwatch.getPopulation();}});}}.execute();扩展方法/*** 当前颜色是否接近黑色** @param rgb 颜色值* @return*/public boolean isLightColor(int rgb) {int blue = Color.blue(rgb);int green = Color.green(rgb);int red = Color.red(rgb);double luma = red * 0.299 + green * 0.587 + blue * 0.114; // per ITU-R BT.709if (luma < 50) {// pick a different colourLog.i("isLightColor", "深色,当前的色值总合为:" + luma + ",Rgb颜色值为:" + rgb);return true;}return false;}/*** 给当前颜色值设置透明度** @param percent 透明值* @param rgb     rgb* @return*/protected int getTranslucentColor(float percent, int rgb) {int blue = Color.blue(rgb);int green = Color.green(rgb);int red = Color.red(rgb);int alpha = Color.alpha(rgb);alpha = Math.round(alpha * percent);return Color.argb(alpha, red, green, blue);}/*** 颜色加深算法*/private int setColorBurn(int rgb, float val) {int r = (rgb >> 16) & 0xff;int g = (rgb >> 8) & 0xff;int b = rgb & 0xff;r = (int) Math.floor(r * (1f + val));g = (int) Math.floor(g * (1f + val));b = (int) Math.floor(b * (1f + val));return Color.rgb(r, g, b);}/*** 颜色浅化算法*/private int setColorShallow(int rgb, float val) {int r = (rgb >> 16) & 0xff;int g = (rgb >> 8) & 0xff;int b = rgb & 0xff;r = (int) Math.floor(r * (1f - val));g = (int) Math.floor(g * (1f - val));b = (int) Math.floor(b * (1f - val));return Color.rgb(r, g, b);}

Android 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颜色提取

    2019独角兽企业重金招聘Python工程师标准>>> Palette介绍 Palette是Google在5.0中引入的来获取bitmap颜色值的一个工具类,为了兼容以前的版本,所以 ...

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

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

  5. android Palette使用详解

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

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

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

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

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

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

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

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

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

  10. Android Palette实现原理

    一. Palette介绍和用法 Palette是调色板,可以用来获取一张Bitmap的主色调,Android Studio中,直接引用androidx包就可以(建议不要用support包),代码使用方 ...

最新文章

  1. 【C++】Google C++编码规范(一):作用域
  2. php屏幕抓取,PHP抓屏函数实现屏幕快照代码分享
  3. php ob flush 不管用,php ob_flush 不能每隔一秒输出
  4. Java 一维数组作为参数和返回值
  5. DL之RNN:基于RNN实现模仿贴吧留言
  6. ALV TREE学习笔记
  7. python装饰器编程_Python编程中装饰器的使用示例解析
  8. Linux CentOS 5.5 服务器安装图文教程
  9. 【原】搬家了,请移步
  10. 一个走过太多坑的老弟对面向对象知识的总结:世上无难事,有的真不行
  11. C进阶指南(1):整型溢出和类型提升、内存申请和管理(转)
  12. 应届生去软通动力怎么样_超强干货:应届生如何找实习工作?
  13. C++基础::非类型模板参数在STL中的应用
  14. Emacs一个键绑定多个命令
  15. 大学计算机专业的实验室图片,清华大学计算机系人工智能实验室.PDF
  16. 一元四次方程欧拉解法的证明
  17. xmos xu208加密
  18. nginx-http-sysguard模块
  19. 招募中|一个小时变身AI应用部署专家,NVIDIA专场公开课 端云边缘协作
  20. 太恐怖了 两天搞定一个项目 Java Web MVC 网络商城教程+源代码

热门文章

  1. android自定义显示年月日,显示年月日时分秒
  2. 超宽屏显示器32寸,双11电竞游戏显示器的最佳选择
  3. HMAC——典型的数字签名技术
  4. Imagemagick 使用
  5. RMP安装ImageMagick
  6. vscode中为golang开发环境配置代理goproxy
  7. win10提醒软件桌面消息通知怎么打开
  8. iOS10.1.1越狱插件推荐——SSHIcon
  9. 商务旅行,保护个人信息安全,需要遵守的基本原则
  10. 整理NSDate,NSTimeInterval和时间间隔问题