有时候做项目的时候,需要动态的计算两颜色值之间的中间值,然后做出一定的效果,那么该怎么求呢?

下面说说做法:

简单而言,就是需要对两颜色之间的求和再取平均值,但是直接使用color.parseInt再求和除2是不对的,因为直接求和会导致颜色不对,具体原因出自相加求和颜色退位。

那么,该如何算呢,贴下代码:

public static String getMiddleColor(String color1, String color2) {if (color1.contains("#") && color2.contains("#") && color1.length() == color2.length() && color2.length() == 7) {String tempColor1 = color1.replace("#", "");
        String tempColor2 = color2.replace("#", "");
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("#");
        for (int i = 0; i < tempColor1.length(); i++) {String tempResult = (changeHex2Int(String.valueOf(tempColor1.charAt(i)))+ changeHex2Int(String.valueOf(tempColor2.charAt(i)))) / 2 + "";
            stringBuffer.append(changeInt2Hex(tempResult));
        }return stringBuffer.toString();
    }return "";
}

简单的说就是根据6位的颜色直接逐个逐个的求和再除二,那么这个颜色值就是对的了。

private static int changeHex2Int(String temp) {BigInteger srch = new BigInteger(temp, 16);
    return Integer.valueOf(srch.toString());
}private static String changeInt2Hex(String temp) {BigInteger srch = new BigInteger(temp, 10);
    return Integer.toHexString(Integer.parseInt(srch.toString()));
}

如此一来,就能实现一个比较困难的需求,用曲线救国的方式实现我们的功能要求了。

感谢你的浏览。

java 获取两颜色值的中间值相关推荐

  1. 在Java中获取两个数的中间值(超大数值)

    //获取两个数的中间值(超大数值) public class MidValue {public static void main(String[] args) {method1();//两数相加后除二 ...

  2. 获取两个数百分比的值

    1 /** 2 * 获取两个数百分比的值 3 * 4 * @param num1 5 * @param num2 6 * @param retain 保留小数位数 7 * @return 8 */ 9 ...

  3. java获取两个字符串日期之间间隔的天数

    java获取两个字符串日期之间间隔的天数 import java.text.ParseException; import java.text.SimpleDateFormat; import java ...

  4. java 获取两条经纬度线段的交点坐标工具类

    java 获取两条经纬度线段的交点坐标工具类 网上有线段是否相交的判断方法,但是很少有获取线段交点的坐标的方法 我在这里整合了网上的一些相交的方法,通过相交的xy轴点返推出了经纬度. 拾取坐标系统 可 ...

  5. java获取两个日期之间的所有日期(包括开始日期和结束日期)

    java获取两个日期之间的所有日期集合 解决方法: import java.text.SimpleDateFormat; import java.util.ArrayList; import java ...

  6. Java比较两个实体属性值是否相同,将不同的属性输出

    /*** 比较两个实体属性值,返回一个map以有差异的属性名为key,value为一个Map分别存oldObject,newObject此属性名的值* @param oldObject 进行属性比较的 ...

  7. java 获取两个时间差_java如何获取两个日期的时间差

    本文实例为大家分享了java如何获取两个日期的时间差,供大家参考,具体内容如下 rainBeginTime是从本地数据库获取的时间,格式为"yyyy-MM-ddTHH:mm:ss" ...

  8. java获取两个时间的间隔天数_java获取两日期的间隔天数

    这是我程序中用到的方法,传入的日期格式,可根据本身的须要做相应的改变.java /** * 读取两个日期之间的天数 * @param begin yyyy-mm-dd * @param end yyy ...

  9. Java 获取两个日期之间的日期

    1.前期需求,两个日期,startDate和endDate,然后获取到两个日期之间的日期 /*** 获取两个日期之间的日期* @param start 开始日期* @param end 结束日期* @ ...

最新文章

  1. 检查型异常(Checked Exception)与非检查型异常(Unchecked Exception)
  2. IIS启动时出现0x8ffe2740的错误
  3. 如何将网页保存为图片_如何用浏览器插件一键批量下载网页图片?
  4. 状态很差时,就不要再继续做了。因为是徒劳,再就是过段时间或第二天再看,会豁然开朗,原来存在的疑难问题都迎刃而解。平时没事的时候要不断地给自己充电,让自己了解多方面知识。...
  5. [Swift]LeetCode326. 3的幂 | Power of Three
  6. python函数abs()
  7. c语言如何在坐标输出,tc 如何在指定坐标处 输出bmp图片??
  8. SQL Server 2012大数据导入Oracle的解决方案
  9. 在字符串中查找id值MySQL
  10. 个人经验分享:AD绘制PCB(入门教程)
  11. Unity塔防游戏学习(六)
  12. 太赞了!图解SQL基础知识,菜鸟也能看懂的SQL文章!
  13. 想要职场安全感?那就请你别停止成长
  14. Axure 点图片外区域即隐藏_多年后终迎换代,新奔腾B70——颜值即是正义!_搜狐汽车...
  15. 焦作市宇华学校2021高考成绩查询,河南2021高考最高分多少分,河南历年高考状元资料...
  16. Code for fun (1)
  17. 《红面书生》的算法博客
  18. Laravel Sail 使用 PhpStorm 与 Xdebug 进行调试
  19. sqlserver 字段类型详解
  20. 3-6岁经典绘本分级大推荐,给孩子先收藏起来

热门文章

  1. 建站技术之csrf django版
  2. linux系列(十):shell循环结构、for、while
  3. 学习《JavaScript高级程序设计》----day06
  4. Leetcode:NO.15 三数之和 夹逼
  5. Linux杂谈之python命令
  6. 每个人都能制作的简易版QQ音乐(HTML+CSS+JQuery)
  7. 你知道什么是 短路与 和 短路非吗 ???
  8. Andriod-Dagger2
  9. 关于com.lowagie.text包的报错问题
  10. idea 启动报错: Failed to create JVM.JVM.Path XXXXXXX\jbr\ 我的解决办法