From c3ac290a6ced163abd059d855c1eff184bcdf23c Mon Sep 17 00:00:00 2001 From: wangdongdong Date: Wed, 19 Apr 2017 15:36:00 +0800 Subject: [PATCH] update progressbar Signed-off-by: wangdongdong --- sample/src/main/res/layout/activity_main.xml | 3 +++ sample/src/main/res/values/colors.xml | 2 ++ .../statebutton/CircleTextProgressbar.java | 18 ++++++++++++++++-- .../java/mazouri/statebutton/StateButton.java | 4 ++++ statebutton/src/main/res/values/attrs.xml | 2 ++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/sample/src/main/res/layout/activity_main.xml b/sample/src/main/res/layout/activity_main.xml index d133d95..01d04c9 100644 --- a/sample/src/main/res/layout/activity_main.xml +++ b/sample/src/main/res/layout/activity_main.xml @@ -323,6 +323,8 @@ app:barMaxProgress="15" app:barProgressLineColor="@color/colorPrimary" app:barProgressLineWidth="3dp" + app:barProgressTextColor="@color/colorPrimary" + app:barProgressLineBgColor="#fff" app:state="enabled"/> diff --git a/sample/src/main/res/values/colors.xml b/sample/src/main/res/values/colors.xml index 3ab3e9c..6157c60 100644 --- a/sample/src/main/res/values/colors.xml +++ b/sample/src/main/res/values/colors.xml @@ -3,4 +3,6 @@ #3F51B5 #303F9F #FF4081 + + #fff diff --git a/statebutton/src/main/java/mazouri/statebutton/CircleTextProgressbar.java b/statebutton/src/main/java/mazouri/statebutton/CircleTextProgressbar.java index 71bf86c..104c05c 100644 --- a/statebutton/src/main/java/mazouri/statebutton/CircleTextProgressbar.java +++ b/statebutton/src/main/java/mazouri/statebutton/CircleTextProgressbar.java @@ -53,6 +53,8 @@ public class CircleTextProgressbar extends android.support.v7.widget.AppCompatTe */ private int progressLineColor = Color.BLUE; + private int progressLineBgColor = Color.GRAY; + /** * 进度条的宽度。 */ @@ -131,6 +133,7 @@ private void initialize(Context context, AttributeSet attributeSet) { circleColor = inCircleColors.getColorForState(getDrawableState(), Color.TRANSPARENT); progressLineColor = typedArray.getColor(R.styleable.CircleTextProgressbar_progressLineColor, Color.TRANSPARENT); + progressLineBgColor = typedArray.getColor(R.styleable.CircleTextProgressbar_progressLineBgColor, Color.GRAY); progressLineWidth = typedArray.getDimensionPixelSize(R.styleable.CircleTextProgressbar_progressLineWidth, 8); progressChangeDuration = typedArray.getInt(R.styleable.CircleTextProgressbar_progressChangeDuration, 0); maxProgress = typedArray.getInt(R.styleable.CircleTextProgressbar_maxProgress, 100); @@ -204,6 +207,14 @@ public void setProgressChangeDuration(int progressChangeDuration) { this.progressChangeDuration = progressChangeDuration; } + public void setProgressLineColor(int progressLineColor) { + this.progressLineColor = progressLineColor; + } + + public void setProgressLineBgColor(int progressLineBgColor) { + this.progressLineBgColor = progressLineBgColor; + } + public void setMaxProgress(int maxProgress) { this.maxProgress = ++maxProgress; } @@ -356,14 +367,17 @@ protected void onDraw(Canvas canvas) { canvas.drawText(getText().toString(), bounds.centerX(), textY, paint); //画进度条 - mPaint.setColor(progressLineColor); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(progressLineWidth); mPaint.setStrokeCap(Paint.Cap.ROUND); int deleteWidth = progressLineWidth + outLineWidth; mArcRect.set(bounds.left + deleteWidth / 2, bounds.top + deleteWidth / 2, bounds.right - deleteWidth / 2, bounds.bottom - deleteWidth / 2); - Log.d("progress", "progress : " + progress + ", maxProgress : " + maxProgress); + //画进度条背景 + mPaint.setColor(progressLineBgColor); + canvas.drawArc(mArcRect, 0, 360, false, mPaint); + + mPaint.setColor(progressLineColor); canvas.drawArc(mArcRect, 0, 360 * progress / maxProgress, false, mPaint); } diff --git a/statebutton/src/main/java/mazouri/statebutton/StateButton.java b/statebutton/src/main/java/mazouri/statebutton/StateButton.java index cfe25fd..491cb51 100644 --- a/statebutton/src/main/java/mazouri/statebutton/StateButton.java +++ b/statebutton/src/main/java/mazouri/statebutton/StateButton.java @@ -69,6 +69,8 @@ public class StateButton extends RelativeLayout { */ private int progressLineColor = Color.BLUE; + private int progressLineBgColor = Color.GRAY; + private int progressTextColor; /** @@ -145,6 +147,7 @@ public StateButton(Context context, AttributeSet attrs, int defStyleAttr) { int drawablePadding = a.getDimensionPixelSize(R.styleable.StateButton_drawablePadding, dip2px(10f)); progressLineColor = a.getColor(R.styleable.StateButton_barProgressLineColor, Color.TRANSPARENT); + progressLineBgColor = a.getColor(R.styleable.StateButton_barProgressLineBgColor, Color.GRAY); progressTextColor = a.getColor(R.styleable.StateButton_barProgressTextColor, Color.WHITE); progressLineWidth = a.getDimensionPixelSize(R.styleable.StateButton_barProgressLineWidth, 8); progressChangeDuration = a.getInt(R.styleable.StateButton_barProgressChangeDuration, 0); @@ -169,6 +172,7 @@ public StateButton(Context context, AttributeSet attrs, int defStyleAttr) { lpProgressbar.height = iconHeight; mCircleTextProgressbar.setId(ID_PROGRESS); mCircleTextProgressbar.setProgressColor(progressLineColor); + mCircleTextProgressbar.setProgressLineBgColor(progressLineBgColor); mCircleTextProgressbar.setProgressLineWidth(progressLineWidth); mCircleTextProgressbar.setProgressChangeDuration(progressChangeDuration); mCircleTextProgressbar.setMaxProgress(maxProgress); diff --git a/statebutton/src/main/res/values/attrs.xml b/statebutton/src/main/res/values/attrs.xml index e47f173..c6cafbb 100644 --- a/statebutton/src/main/res/values/attrs.xml +++ b/statebutton/src/main/res/values/attrs.xml @@ -29,6 +29,7 @@ + @@ -55,6 +56,7 @@ +