【发布时间】:2016-04-26 22:23:52
【问题描述】:
如何在 Android 中反转十六进制颜色? 我正在尝试使用 ~ 但这也反转 alpha。
private PaintType getNegativePaintType(String hexa) {
//hexa = "#28cb43";
return new SolidColor(~Color.parseColor(hexa));
}
【问题讨论】:
如何在 Android 中反转十六进制颜色? 我正在尝试使用 ~ 但这也反转 alpha。
private PaintType getNegativePaintType(String hexa) {
//hexa = "#28cb43";
return new SolidColor(~Color.parseColor(hexa));
}
【问题讨论】:
试试这个:
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)));
}
【讨论】:
试试这个:
~cor.intValue() | 0xFF000000
【讨论】:
cor 是什么?它的数据类型是什么?
int 值
cor 是int?我认为 int 没有 intValue() 方法,因为它只是一个原始方法。