Android 判断颜色为深颜色还是浅颜色来动态调整app文字和图标颜色
Android 判断颜色为深颜色还是浅颜色来动态调整app文字和图标颜色
- 前言
- 解决
- 方案1
- 方案2
- 完事
前言
现在,项目中有个需求就是 app 的顶部 title bar 的颜色能根据背景图片动态调整颜色。但是这时候就会有一个问题,那就是 title bar 上面会有一些图标和文字,他们应该变成什么颜色才对呢?
我们可以参考系统状态栏,显示两种颜色,黑色和白色。当背景颜色为深色系的颜色时,就显示白色;当背景颜色为浅色系时,就显示黑色。
但是怎么区分背景颜色是深色系还是浅色系呢?
解决
参考:@tomcatsg – 如何通过RGB值判断颜色深浅
方案1
把 RGB 的值求和,然后取一个值,当和大于等于此值就为浅色。
公式如下:
if ($R + $G + $B >= 450) {// add shadow
}
这个算法很傻很简单,但效果不理想,特别是在 B 较大的时候,估计是眼睛对 RGB 各种颜色的敏感度都不一样。
方案2
把 RGB 模式转换成 YUV 模式,而 Y 是明亮度(灰阶),因此只需要获得 Y 的值而判断他是否足够亮就可以了。
公式如下:
$grayLevel = $R * 0.299 + $G * 0.587 + $B * 0.114;
if ($grayLevel >= 192) {// add shadow
}
代码中使用:
/*** 显示标题背景颜色* @param colorInt*/public void setTittleColor(int colorInt) {llTittle.setBackgroundColor(colorInt);int gray = (int) (Color.red(colorInt) * 0.299 + Color.green(colorInt) * 0.587 + Color.blue(colorInt) * 0.114);int color;if (gray >= 192) {// 深色系color = mContext.getResources().getColor(R.color.text_normal_color);} else {// 浅色系color = mContext.getResources().getColor(R.color.white_color);}imgBack.setColorFilter(color);imgLast.setColorFilter(color);imgNext.setColorFilter(color);imgRefresh.setColorFilter(color);txtTittle.setTextColor(color);}
完事
Android 判断颜色为深颜色还是浅颜色来动态调整app文字和图标颜色相关推荐
- Android 设置状态栏背景颜色和状态栏文字、图标颜色
纯抄的,记录学习,感谢原文作者 原文:https://www.jianshu.com/p/5a54b2c3ea05 Android 4.4(API 19)之后,就提供了修改状态栏颜色的方法,但是在 A ...
- G2调整legend文字的字体颜色
G2的图表legend文字的字体颜色默认是灰色. 更改方法,该成白色: chart.legend('year', {position: "right",itemName: {sty ...
- android状态栏背景色和图标颜色更改总结
通过若干种方法来实现状态栏背景和图标变色 注意事项:api 23才支持状态栏图标变色,所以图标变色会在编译api>=23中实现 一 Android 4.4 之前状态栏默认黑色,不能改变 二 An ...
- android开发 修改标题栏背景_android开发修改状态栏背景色和图标颜色
修改状态栏背景色和图标颜色 默认是黑底白字的,现在要改为白底黑字的 先看下效果图: Screenshot_2018-01-03-19-20-27-797_com.yiban1314..png 1.状态 ...
- R语言ggplot2可视化配置图例(legend)标签色彩的升序或者反序(reverse)实战:ggplot2可视化默认图例标签色彩(升序,颜色越来越深)、可视化配置图例标签颜色反序(颜色越来越浅)
R语言ggplot2可视化配置图例(legend)标签色彩的升序或者反序(reverse)实战:ggplot2可视化默认图例标签色彩(升序,颜色越来越深).可视化配置图例标签颜色反序(颜色越来越浅) ...
- 根据RGB值判断颜色是否深浅色(附深浅色颜色集合)
做博客云标签时碰到了这个问题,因为自己的背景是白色的,所以标签的背景色要是深色.网上找到了按照灰度值去判断(CSDN论坛),然后又搜了一下已有的文章. g = R0.299 + G0.587 + B* ...
- android arcgis多变形边框颜色,Arcgis for Android 判断指定点是否在多边形内部
Arcgis for Android 判断指定点是否在指定多边形的内部方法: /** * 判断坐标点是否落在指定的多边形区域内 * @param point 指定的坐标点 * @param list ...
- Android设置状态栏字体深色,Android实现修改状态栏背景、字体和图标颜色的方法...
搜索热词 前言: Android开发,对于状态栏的修改,实在是不友好,没什么api可以用,不像ios那么方便.但是ui又喜欢只搞ios一套.没办法.各种翻源码,写反射.真的蛋疼. 需求场景: 当too ...
- android studio app字体大小设置,Android Studio App设置TextView文字内容大小颜色
设置TextView文字内容大小颜色 1.第一种方法在activity_main.xml李设置,Java文件不用改: android:text="这里是文字" android:te ...
最新文章
- 固件模块之间的关系 C语言里面的模块
- java中setid(),Java Process.setId方法代碼示例
- System.arraycopy 和Arrays.copyOf
- 微信门店小程序怎样创建 门店小程序创建方法简介
- Java 洛谷 P1150 Peter的烟
- Linux中ifcfg-eth0配置参数解释
- hao123电脑版主页_百度浏览器停更没关系,hao123才令人唏嘘!
- Qt工作笔记-Qt仿大佬使用关键字(Q_DECL_OVERRIDE与override)
- java获得map内存_[java]测试static的map的内存
- 源码编译Ros, Ubuntu18.04系统使用源码编译Ros1,出错集合及其解决办法
- windows XP cmd命令大全
- CAN应用层常用协议
- 主曲率,主方向,高斯曲率与平均曲率公式与matlab代码
- MediaWiki中的各种功能和设置
- 艾永亮:永远也说不清作用的保健品凭什么卖了千年?
- mysql计算年休假天数_年休假天数计算方法是怎样的
- 庆科EMW3080 mxos开发环境搭建helloworld编译
- python excel处理 pandas 统计重复数据
- 做自己的m3u8点播系统使用HTTP Live Streaming
- 待办事项Windows软件推荐
热门文章
- Java生成Word文档并压缩导出。
- 微信公众号监听后退,关闭内置浏览器
- 新闻发布系统类图_强化新闻宣传工作 提高舆论引导能力——攀枝花市应急管理局开展引导业务技能大比武活动...
- 项目中遇到哪些难点,如何解决的
- liboqs-量子安全密码算法开源C库
- UE4 插值FInterpEaseInOut和Ease
- outlook 2007数据文件
- SpringMvc-maven-Mysql-ajax-bootsrap进行一个简单的web开发(大二下期末考试内容)
- 手机APP远程温湿度监控系统(连上公网、阿里云)
- java+selenium+chromedrive实现全屏截图