做个笔记,主要是需要使用ClipDrawable、LayerDrawable:

private void setProgressBg(int progress) {
    int a = progress * 255 / 100;
    int color = Color.argb(a, 255, 90, 147);
    ColorDrawable colorDrawable = new ColorDrawable();
    colorDrawable.setColor(color);
    ClipDrawable clipDrawable = new ClipDrawable(colorDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);

    Drawable drawable = getResources().getDrawable(R.color.transparent);
    Drawable[] layers = new Drawable[]{drawable,clipDrawable};
    LayerDrawable layerDrawable = new LayerDrawable(layers);
    layerDrawable.setDrawableByLayerId(0,drawable);
    layerDrawable.setDrawableByLayerId(1,clipDrawable);
    progressBar.setProgressDrawable(clipDrawable);

    progressBar.setProgress(0);
    progressBar.setProgress(progress);

    Loger.d("Vote投票", "result = " + progress);
    Loger.d("Vote投票", "a = " + a);
}