实际上,在我的RecyclerView适配器中,我通过
设置了背景颜色。 holder.itemView.setBackgroundColor(Color.parseColor(currentItem.getSfondo()));
从数据库中给出解析后的颜色,到现在为止一切正常,但是现在我在cardView中添加了一个底部条,在该条中我将显示价格,这样我就可以从itemView中获得相同的颜色因此可以使用Color.parseColor(currentItem.getSfondo()),但可以通过添加一些alpha或idk使其变浅,以便用户可以将文本与价格分开。
类似的东西
答案 0 :(得分:3)
我使用这些方法。
lighten(Color.parseColor("#636161"), .5); //.5 is factor to lighten
只需将这些方法添加到您的Util类中即可。
public static int lighten(int color, double fraction) {
int red = Color.red(color);
int green = Color.green(color);
int blue = Color.blue(color);
red = lightenColor(red, fraction);
green = lightenColor(green, fraction);
blue = lightenColor(blue, fraction);
int alpha = Color.alpha(color);
return Color.argb(alpha, red, green, blue);
}
public static int darken(int color, double fraction) {
int red = Color.red(color);
int green = Color.green(color);
int blue = Color.blue(color);
red = darkenColor(red, fraction);
green = darkenColor(green, fraction);
blue = darkenColor(blue, fraction);
int alpha = Color.alpha(color);
return Color.argb(alpha, red, green, blue);
}
private static int darkenColor(int color, double fraction) {
return (int)Math.max(color - (color * fraction), 0);
}
private static int lightenColor(int color, double fraction) {
return (int) Math.min(color + (color * fraction), 255);
}
更新
您可以通过 Color 类将十六进制颜色转换为int颜色。
Color.parseColor("#636161");
并且可以使用这些方法
lighten(Color.parseColor("#636161"), .5);