0

我正在使用此代码随机更改我的 textView 的颜色。我有黑色背景,所以有时这些颜色很难阅读。

 int r = (rand.nextInt(176) * 80 ) / 256;
        int g = (rand.nextInt(176) * 80 ) / 256;
        int b = (rand.nextInt(176) * 80 ) / 256;

        TextView pos = (TextView) view.findViewById(R.id.position);
        pos.setText(((Integer)(position + 1)).toString());
        pos.setTextSize(30);
        pos.setTextColor(Color.argb(255,r,g,b));

        TextView data = (TextView) view.findViewById(R.id.textOfTip);
        data.setText(tipsList[position].toString());
        data.setTextSize(24);
        data.setTextColor(Color.argb(255,r,g,b));

我的问题是,我怎样才能增加文本颜色的亮度或发光效果,以便他们可以轻松阅读。

此致

4

2 回答 2

2

首先,以格式获取颜色0xAARRGGBB(例如,纯红色为 0xFFFF0000)。然后,将其推送到方法colorToHSV。接下来,更改L/V/B值(略有不同,但我认为对于您正在做的事情来说已经足够接近了)。最后,再次调用HSVToColor以获取新颜色的0xAARRGGBB格式。然后有几种方法可以将其转换为 R、G、B 值,这通常涉及字节移位。

像这样的东西:

int color = 0xFFFF0000;
float[] hsv = new float[3];
Color.colorToHSV(color, hsv);
hsv[2] = 0.2f;
color = Color.HSVToColor(hsv);
int[] rgb = new int[3];
MyColor.colorToRGB(color, rgb); // Your custom method
// The rgb array now contains your RGB colors.

注意:还有RGBToHSV,可能会派上用场。

于 2012-08-31T04:49:02.463 回答
0

我认为有一些公式可以实现亮度和发光效果。这篇文章让你很好地理解它。

确定RGB颜色亮度的公式

于 2012-08-31T04:00:14.237 回答