java 获取两颜色值的中间值

来源:互联网 发布:linux ping命令 编辑:程序博客网 时间:2024/06/05 11:45

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

 下面说说做法:

简单而言,就是需要对两颜色之间的求和再取平均值,但是直接使用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()));}
如此一来,就能实现一个比较困难的需求,用曲线救国的方式实现我们的功能要求了。

感谢你的浏览。

原创粉丝点击