gpt4 book ai didi

android - 如何覆盖 ProgressBar 以将进度填充更改为具有圆角和颜色的可绘制对象

转载 作者:行者123 更新时间:2023-11-29 01:41:38 26 4
gpt4 key购买 nike

我有一种以编程方式创建的特定颜色。

我在 GradientDrawable 中使用该颜色。

我需要覆盖 ProgressBar 源代码的某些部分,以便在创建进度填充颜色时使用其中的 GradientDrawable,但我不知道我应该覆盖哪一部分以及将代码放在哪里

这是进度条源代码:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/ProgressBar.java

这是我想使用的可绘制对象,但它没有相应地扩展到所取得的进展

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;
}

最佳答案

试试这个:

    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);

关于android - 如何覆盖 ProgressBar 以将进度填充更改为具有圆角和颜色的可绘制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24202444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com