Android 如何替代ProgressBar,以便将进度填充更改为具有圆角和颜色的可绘制
我有一个我通过编程创建的特定颜色 我在渐变绘图中使用这种颜色 我需要重写ProgressBar源代码的某些部分,以便在创建进度填充颜色时使用GradientDrawable,但我不知道应该重写哪个部分以及将代码放在哪里 这是progressbar源代码: 这是我想要使用的绘图工具,但它没有相应地扩展到所取得的进展Android 如何替代ProgressBar,以便将进度填充更改为具有圆角和颜色的可绘制,android,Android,我有一个我通过编程创建的特定颜色 我在渐变绘图中使用这种颜色 我需要重写ProgressBar源代码的某些部分,以便在创建进度填充颜色时使用GradientDrawable,但我不知道应该重写哪个部分以及将代码放在哪里 这是progressbar源代码: 这是我想要使用的绘图工具,但它没有相应地扩展到所取得的进展 public static GradientDrawable progressBarProgressDrawable(Context context, float[] radii)
public static GradientDrawable progressBarProgressDrawable(Context context, float[] radii) {
GradientDrawable shape = new GradientDrawable();
shape.setCornerRadii(radii);
shape.setColor(context.getResources().getColor(R.color.green_button));
float brightness = 0.9f;
float[] hsb = new float[] { 43, 23, (33 * brightness) };
int alpha = 77;
int newColor = Color.HSVToColor(alpha, hsb);
shape.setColor(newColor);
return shape;
}
ProgressBar有一个方法
如果要覆盖它,可以
@Override
public void setBackgroundColor (int color) {
int c = 0x0000ff00; // Using green
super.setBackgroundColor(c);
}
或者你可以打个电话
ProgressBar bar = new ProgressBar();
bar.setBackgroundColor(c);
试试这个:
final ProgressBar pb = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
setContentView(pb);
GradientDrawable gd = new GradientDrawable();
gd.setCornerRadius(32);
final Drawable cd = new ClipDrawable(gd, Gravity.LEFT, ClipDrawable.HORIZONTAL);
pb.setProgressDrawable(cd);
OnTouchListener l = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int progress = (int) (event.getX() * pb.getMax() / pb.getWidth());
pb.setProgress(progress);
float[] hsv = {
event.getX() * 360 / pb.getWidth(), 1, 1
};
int color = Color.HSVToColor(hsv);
Log.d(TAG, "onTouch " + Integer.toHexString(color));
cd.setColorFilter(color, Mode.SRC_ATOP);
return true;
}
};
pb.setOnTouchListener(l);
您是否仅为更改颜色而覆盖进度条?你可以用一种简单得多的方法来做。查看此处检查并在进度中使用Drawable.setColorFilterDrawable@pskink在这种情况下,我应该使用什么porterduff模式?getProgressDrawable返回空值:(我想更改进度填充颜色,而不是背景颜色。另外,我想设置一个自定义的可绘制颜色,以查看xml资源文件中定义的默认进度可绘制颜色。)