Android 颜色操作(对比、混合)
GitHub源码
1、 颜色对比
/** Calculates the constrast between two colors, using the algorithm provided by the WCAG v2. */public static float computeContrastBetweenColors(int bg, int fg) {float bgR = Color.red(bg) / 255f;float bgG = Color.green(bg) / 255f;float bgB = Color.blue(bg) / 255f;bgR = (bgR < 0.03928f) ? bgR / 12.92f : (float) Math.pow((bgR + 0.055f) / 1.055f, 2.4f);bgG = (bgG < 0.03928f) ? bgG / 12.92f : (float) Math.pow((bgG + 0.055f) / 1.055f, 2.4f);bgB = (bgB < 0.03928f) ? bgB / 12.92f : (float) Math.pow((bgB + 0.055f) / 1.055f, 2.4f);float bgL = 0.2126f * bgR + 0.7152f * bgG + 0.0722f * bgB;float fgR = Color.red(fg) / 255f;float fgG = Color.green(fg) / 255f;float fgB = Color.blue(fg) / 255f;fgR = (fgR < 0.03928f) ? fgR / 12.92f : (float) Math.pow((fgR + 0.055f) / 1.055f, 2.4f);fgG = (fgG < 0.03928f) ? fgG / 12.92f : (float) Math.pow((fgG + 0.055f) / 1.055f, 2.4f);fgB = (fgB < 0.03928f) ? fgB / 12.92f : (float) Math.pow((fgB + 0.055f) / 1.055f, 2.4f);float fgL = 0.2126f * fgR + 0.7152f * fgG + 0.0722f * fgB;return Math.abs((fgL + 0.05f) / (bgL + 0.05f));}
使用
isDark = computeContrastBetweenColors(color,Color.WHITE) > 3f;
2、颜色混合
public int blendColor(int fg, int bg) {int scr = Color.red(fg);int scg = Color.green(fg);int scb = Color.blue(fg);int sa = fg >>> 24;int dcr = Color.red(bg);int dcg = Color.green(bg);int dcb = Color.blue(bg);int color_r = dcr * (0xff - sa) / 0xff + scr * sa / 0xff;int color_g = dcg * (0xff - sa) / 0xff + scg * sa / 0xff;int color_b = dcb * (0xff - sa) / 0xff + scb * sa / 0xff;return ((color_r << 16) + (color_g << 8) + color_b) | (0xff000000);
}
Android 颜色操作(对比、混合)相关推荐
- 三星note5 android版本区别吗,三星Note5哪种颜色好看?三星Note5四种颜色区别对比图解...
三星Note5有几种颜色?哪种颜色更好看呢?三星Note5是一款时下非常受欢迎的大屏旗舰手机,搭载Exynos 7422八核处理器,4GB超大内存,配备S Pen触控笔,支持指纹识别等特性,颇受消费者 ...
- Android 颜色渲染(九) PorterDuff及Xfermode详解
Android 颜色渲染(九) PorterDuff及Xfermode详解 之前已经讲过了除ComposeShader之外Shader的全部子类, 在讲ComposeShader(组合渲染)之前, ...
- 学会这3个Android Studio操作,保你月薪double
码个蛋(codeegg)第 753次推文 作者: 孙强Jimmy 原文: https://www.jianshu.com/p/0770cde09ede 前言 Android Profiler能够提供关 ...
- OpenGL超级宝典笔记——累积缓冲区与其他颜色操作
2019独角兽企业重金招聘Python工程师标准>>> 累积缓冲区 OpenGL除了颜色缓冲区.深度缓冲区.模板缓冲区之外,还有累积缓冲区.累积缓冲区允许你把渲染到颜色缓冲区的值,拷 ...
- android ios 对比 组件_iOS系统和Android系统全面对比
摘 要 iOS和Android占据当今智能移动终端市场的半壁江山,结合<嵌入式系统>学习的软硬件协同开发等理念,从硬件.软件.用户三个角度进行iOS与Android的比较.其中,硬件选择 ...
- Android 数据库操作:Room
Room 是 Google 官方对 SqliteDatabase 的封装库,本文列举了 Room 数据库组件的基本操作. Room 官方文档:https://developer.android.goo ...
- python和R文件IO操作对比及dataframe创建方式对比:read_csv、to_csv、write.csv、 data.frame、pd.DataFrame
python和R文件IO操作对比及dataframe创建方式对比 很多工程师可能刚开始的时候只熟悉python或者R其中的一个进行数据科学相关的任务. 那么如果我们对比这学习可以快速了解语言设计背后的 ...
- Android 文件操作
Android 文件操作操作时,要赋予相应的权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_S ...
- Android 颜色渲染(五) LinearGradient线性渲染
版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色处理(五) LinearGradient线性渲染 相信很多人都看过歌词同步的效果, 一是竖直方向的滚动,另一方面是水平方面的歌 ...
最新文章
- dropout,batch norm 区别 顺序
- [MATLAB调试笔记]Update magnetic field in one step
- 深度强化学习探索算法最新综述,近200篇文献揭示挑战和未来方向
- 简单控制器java,无法找到模板:创建一个简单的控制器和视图
- 关于国内部分电子病历编辑器的评价
- 阿里云大数据计算服务MaxCompute(上篇)
- Andorid之为何要用到NDK?
- HTML/CSS基础知识(四)
- .NET开发人员必看:提高ASP.NET Web应用性能的24种方法和技巧——转
- 我是如何用单例模式征服面试官的?
- 字典式攻击及规避方案
- 小区物业管理系统c语言,智能小区物业管理系统毕业论文.doc
- 路透社:大众与江淮计划在合肥投资50.6亿元建新电动汽车工厂
- python复制word全部内容,包括图片、文字、格式
- 如何获取微信好友的地理位置信息
- python控制画笔尺寸_Python turtle库的画笔控制说明
- Qt的QBuffer
- java ireport生成pdf_jasperreport 生成pdf实现下载与打印
- JDK源码分析 FutureTask源码分析
- 数据库 多表 查询练习题