我有一个 TextView 对象,其颜色应根据 SeekBar 的位置而变化。
h_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
h_text.setTextColor(HSV2RGB(i, 255, 255));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) { }
@Override
public void onStopTrackingTouch(SeekBar seekBar) { }
});
理论上,应该采用原始的Progress值,在HSV2RGB方法中我将HSV颜色空间转换为RGB,并且文本应该改变颜色。但文字却消失了。我做错了什么?

代码 HSV2RGB:
public int HSV2RGB(int h, int s, int v) {
float r = 0, g = 0, b = 0;
int _r, _g, _b;
float H = (float) h / 255;
float S = (float) s / 255;
float V = (float) v / 255;
int i = (int)(H * 6);
float f = H * 6 - i;
float p = V * (1 - S);
float q = V * (1 - f * S);
float t = V * (1 - (1 - f) * S);
switch (i % 6) {
case 0: {
r = V;
g = t;
b = p;
}
case 1: {
r = q;
g = V;
b = p;
}
case 2: {
r = p;
g = V;
b = t;
}
case 3: {
r = p;
g = q;
b = V;
}
case 4: {
r = t;
g = p;
b = V;
}
case 5: {
r = V;
g = p;
b = q;
}
}
_r = Math.round(r * 255);
_g = Math.round(r * 255);
_b = Math.round(r * 255);
return Integer.parseInt(Integer.toHexString(_r) + Integer.toHexString(_g) + Integer.toHexString(_b), 16);
}
创建窗口时,我尝试使用HSV2RGB方法设置颜色,但对象消失了。这意味着问题出在 HSV2RGB 中,但我无法理解到底是什么在这里不起作用。

“Color.HSVToColor()”有帮助。问题在于颜色格式。