【问题标题】:Invert a hexadecimal color in Android在Android中反转十六进制颜色
【发布时间】:2016-04-26 22:23:52
【问题描述】:

如何在 Android 中反转十六进制颜色? 我正在尝试使用 ~ 但这也反转 alpha。

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

【问题讨论】:

    标签: java android colors hex


    【解决方案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】:

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

      【讨论】:

      • cor 是什么?它的数据类型是什么?
      • cor 是一个int
      • corint?我认为 int 没有 intValue() 方法,因为它只是一个原始方法。
      猜你喜欢
      • 2019-06-16
      • 1970-01-01
      • 2019-10-29
      • 2014-10-02
      • 2012-09-14
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      相关资源
      最近更新 更多