我正在研究这个项目,我使用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。
答案 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;
}