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

下面说说做法:

简单而言,就是需要对两颜色之间的求和再取平均值,但是直接使用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. Linux下各类TCP网络服务器的实现源代码
  2. 某大厂程序员求助:认识一个不错的小姐姐,却得知对方竟有四个兄弟姐妹!想放弃,对方却穷追不舍,怎么办?...
  3. 写markdown用于Github上readme.md文件
  4. 利用JS提交表单的几种方法和验证
  5. 一条 SQL 语句在 MySQL 中如何被执行的?
  6. 2017腾讯编程题----游戏人物标记
  7. 谷歌浏览器有哪些好看的主题_Kibou 简洁的Typecho主题
  8. hosts多个ip对应一个主机名_Ubuntu16.04修改主机名和查看主机名的方法
  9. STM32F103C8T6引脚功能分布
  10. LoginActivity实现
  11. jdk的官方下载地址
  12. Android 编程经典200例 (pdf)资源
  13. usb转4路rs485、4路rs232原理图
  14. UE 材质编辑器快捷键
  15. ps把图片无损放大的方法
  16. 谷歌统计代码使用方式
  17. 路由器的级联(LAN-WAN)
  18. 子网掩码是什么,IP段的24是什么写法(CIDR写法,斜杠记法斜线记法)
  19. 全球对冲基金及其投资策略解析
  20. 王者荣耀微信查看服务器地址大全,王者荣耀游戏账号在哪里查看微信

热门文章

  1. 「大哉数学之为用」优选法——梯级水库灌溉的优化设计
  2. 股票基础知识(入市必读)
  3. Spring 学习笔记----->AOP
  4. ZYNQ裸机LWIP双网口实现
  5. 0503《软件工程》的简单小总结与展望
  6. 747D. Winter Is Coming
  7. c++中sqrt函数的使用
  8. Vue合并el-table第一列相同数据
  9. Hi,运维,你懂Java吗-No.2:JDK介绍及安装
  10. 【万字长文+100余张图】轻松搞定Unix/Linux环境使用,建议收藏!