如何使解析的颜色更浅?

时间:2018-09-06 13:04:40

标签: android android-recyclerview

实际上,在我的RecyclerView适配器中,我通过

设置了背景颜色。
 holder.itemView.setBackgroundColor(Color.parseColor(currentItem.getSfondo()));

从数据库中给出解析后的颜色,到现在为止一切正常,但是现在我在cardView中添加了一个底部条,在该条中我将显示价格,这样我就可以从itemView中获得相同的颜色因此可以使用Color.parseColor(currentItem.getSfondo()),但可以通过添加一些alpha或idk使其变浅,以便用户可以将文本与价格分开。

类似的东西

enter image description here

1 个答案:

答案 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);