我想做多個圓角矩形進度條progress.like下面的圖片如何在進度條中使用兩種顏色製作圓角矩形?
但是我得到了像下面的進度條圖像的結果。
在這裏,我把我的customDrawable的代碼
public class FractionDrawable extends Drawable {
private Paint mPaint;
private int mTotalPercent;
private int mProgress1Percent;
private int mProgress1Color;
private int mProgress2Percent;
private int mProgress2Color;
private Context context;
public FractionDrawable(Context context,int totalPercent, int progress1Percent, int progress1Color, int progress2Percent, int progress2Color) {
mPaint = new Paint();
this.mTotalPercent = totalPercent;
this.mProgress1Percent = progress1Percent;
this.mProgress1Color = progress1Color;
this.mProgress2Percent = progress2Percent;
this.mProgress2Color = progress2Color;
this.context =context;
}
@Override
public void draw(Canvas canvas) {
Rect b = getBounds();
float totalProgWidth = b.width() * (mTotalPercent/100f);
float frac1Width = totalProgWidth * (mProgress1Percent/100f);
RectF rect = new RectF(0, 0, totalProgWidth, b.height());
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(5);
mPaint.setColor(Color.BLACK);
canvas.drawRoundRect(rect, 18, 18, mPaint);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(mProgress1Color);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawRect(0, 0, frac1Width, b.height(), mPaint);
mPaint.setColor(mProgress2Color);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawRect(frac1Width, 0, totalProgWidth, b.height(), mPaint);
}
@Override
public void setAlpha(int alpha) {
}
@Override
public void setColorFilter(ColorFilter cf) {
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
}
你能否更新這個答案來證明實際上解決了這個問題? – adamk33n3r
它是一個進度條中圓形矩形的多色進度 – urveshpatel50