以编程方式创建progressDrawable

时间:2014-11-30 11:36:31

标签: android dynamic colors drawable progress

我想使用setProgressDrawable方法动态更改进度条上的外观,而不涉及xml文件。

我看到了这个答案:Create a progress drawable programmatically,但有些原因,它只设置进度背景颜色。实际进度颜色甚至没有出现。我正在做的是什么?

我的代码:

public static LayerDrawable createDrawable(int accentColor, int backColor) {

    ShapeDrawable shape = new ShapeDrawable();
    shape.getPaint().setStyle(Style.FILL);
    shape.getPaint().setColor(backColor);

    ShapeDrawable shapeD = new ShapeDrawable();
    shapeD.getPaint().setStyle(Style.FILL);
    shapeD.getPaint().setColor(accentColor);
    ClipDrawable clipDrawable = new ClipDrawable(shapeD, Gravity.LEFT,
            ClipDrawable.HORIZONTAL);

    LayerDrawable layerDrawable = new LayerDrawable(new Drawable[] {
             clipDrawable });
    return layerDrawable;
}

设置新的drawable

progressBar[i].setProgress(Integer.parseInt(internal_marks[i]));
progressBar[i].setProgressDrawable(createDrawable(accent_list[mIndex],getResources().getColor(R.color.progressBack)));

仅供参考:如果我使用xml而不是通过syromaically创建drawable,它可以正常工作,但我想动态地进行。

0 个答案:

没有答案