有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Android中反转十六进制颜色

如何在Android中反转十六进制颜色? 我试着用~但是这个倒置的阿尔法

 private PaintType getNegativePaintType(String hexa) {
    //hexa = "#28cb43"; 
    return new SolidColor(~Color.parseColor(hexa));
}

共 (2) 个答案

  1. # 1 楼答案

    试试这个:

    private PaintType getNegativePaintType(String hexa) {
        //hexa = "#28cb43";
        int color = Color.parseColor(hexa);
        return new SolidColor((color & 0xFF000000) | (~color & 0x00FFFFFF));
    }
    

    关键是切断倒置的alpha值(~color & 0x00FFFFFF),然后应用(|)原始值(color & 0xFF000000

    或者这个:

    private PaintType getNegativePaintType(String hexa) {
        //hexa = "#28cb43";
        int color = Color.parseColor(hexa);
        int invertedColor = ~color;
        return new SolidColor(Color.argb(Color.alpha(color), Color.red(invertedColor), Color.green(invertedColor), Color.blue(invertedColor)));
    }
    
  2. # 2 楼答案

    试试这个: ~cor.intValue() | 0xFF000000