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 に答える