首页 文章

如何在Android中将颜色整数转换为十六进制字符串?

提问于
浏览
163

我有一个从 android.graphics.Color 生成的整数

整数的值为-16776961

如何将此值转换为格式为#RRGGBB的十六进制字符串

简单地说:我想从-16776961输出#0000FF

Note: 我不希望输出包含alpha,我也尝试了this example但没有成功

7 回答

  • 48

    掩码确保你只获得RRGGBB,%06X为你提供零填充十六进制(总是6个字符长):

    String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
    
  • 7
  • 0

    我相信我已找到答案,此代码将整数转换为十六进制字符串并删除alpha .

    Integer intColor = -16895234;
    String hexColor = "#" + Integer.toHexString(intColor).substring(2);
    

    Note 只有在您确定删除alpha不会影响任何内容时才使用此代码 .

  • 3

    这就是我做的

    int color=//your color
     Integer.toHexString(color).toUpperCase();//upercase with alpha
     Integer.toHexString(color).toUpperCase().substring(2);// uppercase without alpha
    

    谢谢你的回答你做的事情

  • 397

    使用此方法Integer.toHexString,使用Color.parseColor时,某些颜色可能会出现Unknown颜色异常 .

    使用此方法String.format("#%06X",(0xFFFFFF&intColor)),您将失去alpha值 .

    所以我推荐这种方法:

    public static String ColorToHex(int color) {
            int alpha = android.graphics.Color.alpha(color);
            int blue = android.graphics.Color.blue(color);
            int green = android.graphics.Color.green(color);
            int red = android.graphics.Color.red(color);
    
            String alphaHex = To00Hex(alpha);
            String blueHex = To00Hex(blue);
            String greenHex = To00Hex(green);
            String redHex = To00Hex(red);
    
            // hexBinary value: aabbggrr
            StringBuilder str = new StringBuilder("#");
            str.append(alphaHex);
            str.append(blueHex);
            str.append(greenHex);
            str.append(redHex );
    
            return str.toString();
        }
    
        private static String To00Hex(int value) {
            String hex = "00".concat(Integer.toHexString(value));
            return hex.substring(hex.length()-2, hex.length());
        }
    
  • 18

    ARGB颜色到十六进制字符串的整数值:

    String hex = Integer.toHexString(color); // example for green color FF00FF00
    

    十六进制字符串到ARGB颜色的整数值:

    int color = (Integer.parseInt( hex.substring( 0,2 ), 16) << 24) + Integer.parseInt( hex.substring( 2 ), 16);
    
  • 1
    String int2string = Integer.toHexString(INTEGERColor); //to ARGB
    String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color
    

相关问题