android中textView的背景色和seekBar值
我正在做一个项目,在这个项目中,我使用一个seekBar来改变一个图形的颜色。这个图形由一个文本视图来表示,该视图有一个用xml设置的特定背景颜色。当我改变seekBar的值时,颜色应该会改变 假设textView有颜色#xxxxxx。我想得到这个颜色的值,并用seekBar的值适当地修改它 例如,如果: 情况1:seekBar值增加0->max=>#yyyyyy(seekBar的每个值都有不同的颜色) 情况2:seekBar值减小最大->0=>#xxxxxx(同上) 我知道如何获取文本视图的颜色:android中textView的背景色和seekBar值,android,colors,textview,Android,Colors,Textview,我正在做一个项目,在这个项目中,我使用一个seekBar来改变一个图形的颜色。这个图形由一个文本视图来表示,该视图有一个用xml设置的特定背景颜色。当我改变seekBar的值时,颜色应该会改变 假设textView有颜色#xxxxxx。我想得到这个颜色的值,并用seekBar的值适当地修改它 例如,如果: 情况1:seekBar值增加0->max=>#yyyyyy(seekBar的每个值都有不同的颜色) 情况2:seekBar值减小最大->0=>#xxxxxx(同上) 我知道如何获取文本视图的颜
ColorDrawable cd = (ColorDrawable) textView.getBackground();
int colorCode = cd.getColor();`
以及如何使seekBar值的“增加”和“减少”值的逻辑
我就是不知道如何使用“进度”和色码从x到y,从y到x。你必须写一个方法
int toColor(int progress)
它将seekbar的onProgressChanged()方法中的进度值转换为int-color,然后将其设置为textview的背景:
textView.setBackgroundColor(convertedColor);
每种颜色都由红、绿、蓝组成 所以试试这个:
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;
}
seekBar的最大值应该是255?我仍然不认为旧的背景色和新的背景色之间有任何关系。像newgcolor=progress+oldbgcolor这样的东西最好使用seekbar的getMax()方法,因为它可以在创建seekbarThis时被重写。这看起来很有希望:D但有一件事,我不知道yyyyy值的确切值,但我不认为我会保持这个条件不变,我会指定一个修饰颜色,就是这样。谢谢你的帮助:)哦,顺便说一句,seekBar的最大值应该是多少?