android

时间:2015-07-01 17:49:53

标签: android colors textview

我正在研究这个项目,我使用seekBar来改变图形的颜色。该图由textView表示,其中特定的背景颜色设置为xml。虽然我改变了seekBar的值,但颜色应该会有所不同。

让我们说textView的颜色是#xxxxxx。我想得到这种颜色的值,并使用seekBar的值修改它propotionaly。

例如,如果:

案例1:seekBar值增加0 - > max => #yyyyyy(seekBar的每个值的不同颜色)

案例2:seekBar值降低max-> 0 => #xxxxxx(与上述相同)

我知道如何获取textView的颜色:

ColorDrawable cd = (ColorDrawable) textView.getBackground();
int colorCode = cd.getColor();`

以及如何使seekBar值的“递增”和“递减”值的逻辑。

我无法弄清楚如何使用“进度”和颜色代码一起从x到y和从y到x。

2 个答案:

答案 0 :(得分:0)

你必须写方法

int toColor(int progress)

将进度值从搜索栏的onProgressChanged()方法转换为int颜色,而不是设置为textview的背景:

textView.setBackgroundColor(convertedColor);

答案 1 :(得分:-1)

每种颜色都由红绿蓝组成 所以试试这个:

public int getColor(int progress) {
    int startColor = Color.parseColor("#xxxxxx");
    int endColor = Color.parseColor("#yyyyyy");

    int start_red = Color.red(startColor);
    int start_green = Color.green(startColor);
    int start_blue = Color.blue(startColor);
    int end_red = Color.red(endColor);
    int end_green = Color.green(endColor);
    int end_blue = Color.blue(endColor);

    int progress_red = start_red + (end_red - start_red) * progress / 100;
    int progress_green = start_green + (end_green - start_green) * progress / 100;
    int progress_blue = start_blue + (end_blue - start_blue) * progress / 100;

    int progress_color = Color.rgb(progress_red, progress_green, progress_blue);
    return progress_color;
}