我希望找到一个在进度为0时呈绿色的搜索栏。 当进度达到50时,颜色缓慢变为黄色,然后当进度为100时,颜色再次缓慢变为红色。
我可以为搜索栏的进度部分执行此操作。
但是我希望改变搜索条的全部颜色,而不仅仅是进度部分。
有人可以帮忙吗?
感谢。
答案 0 :(得分:0)
试试这个,您需要更改hsv数组以满足您的需求
final ProgressBar pb = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
LayerDrawable ld = (LayerDrawable) pb.getProgressDrawable();
final Drawable progressDrawable = ld.findDrawableByLayerId(android.R.id.progress);
OnTouchListener l = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int progress = (int) (event.getX() * 100 / pb.getWidth());
float[] hsv = {
event.getX() * 360 / pb.getWidth(), 1, 1
};
int color = Color.HSVToColor(hsv);
progressDrawable.setColorFilter(color, Mode.SRC);
pb.setProgress(progress);
return true;
}
};
pb.setOnTouchListener(l);
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, 32);
setContentView(pb, lp);