diff --git a/library/src/main/java/com/dd/processbutton/ProcessButton.java b/library/src/main/java/com/dd/processbutton/ProcessButton.java
index 8bedff5..feb006f 100644
--- a/library/src/main/java/com/dd/processbutton/ProcessButton.java
+++ b/library/src/main/java/com/dd/processbutton/ProcessButton.java
@@ -3,6 +3,7 @@
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
+import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.os.Parcel;
import android.os.Parcelable;
@@ -14,9 +15,10 @@ public abstract class ProcessButton extends FlatButton {
private int mMaxProgress;
private int mMinProgress;
- private GradientDrawable mProgressDrawable;
+ private GradientDrawable mProgressLineDrawable;
private GradientDrawable mCompleteDrawable;
private GradientDrawable mErrorDrawable;
+ private GradientDrawable mProgressDrawable;
private CharSequence mLoadingText;
private CharSequence mCompleteText;
@@ -41,8 +43,8 @@ private void init(Context context, AttributeSet attrs) {
mMinProgress = 0;
mMaxProgress = 100;
- mProgressDrawable = (GradientDrawable) getDrawable(R.drawable.rect_progress).mutate();
- mProgressDrawable.setCornerRadius(getCornerRadius());
+ mProgressLineDrawable = (GradientDrawable) getDrawable(R.drawable.rect_progress_line).mutate();
+ mProgressLineDrawable.setCornerRadius(getCornerRadius());
mCompleteDrawable = (GradientDrawable) getDrawable(R.drawable.rect_complete).mutate();
mCompleteDrawable.setCornerRadius(getCornerRadius());
@@ -67,9 +69,9 @@ private void initAttributes(Context context, AttributeSet attributeSet) {
mCompleteText = attr.getString(R.styleable.ProcessButton_pb_textComplete);
mErrorText = attr.getString(R.styleable.ProcessButton_pb_textError);
- int purple = getColor(R.color.purple_progress);
- int colorProgress = attr.getColor(R.styleable.ProcessButton_pb_colorProgress, purple);
- mProgressDrawable.setColor(colorProgress);
+ int purple = getColor(R.color.purple_progress_line);
+ int colorProgressLine = attr.getColor(R.styleable.ProcessButton_pb_colorProgressLine, purple);
+ mProgressLineDrawable.setColor(colorProgressLine);
int green = getColor(R.color.green_complete);
int colorComplete = attr.getColor(R.styleable.ProcessButton_pb_colorComplete, green);
@@ -79,6 +81,12 @@ private void initAttributes(Context context, AttributeSet attributeSet) {
int colorError = attr.getColor(R.styleable.ProcessButton_pb_colorError, red);
mErrorDrawable.setColor(colorError);
+ if (attr.hasValue(R.styleable.ProcessButton_pb_colorProgress)) {
+ mProgressDrawable = (GradientDrawable) getDrawable(R.drawable.rect_progress).mutate();
+ mProgressDrawable.setCornerRadius(getCornerRadius());
+ mProgressDrawable.setColor(attr.getColor(R.styleable.ProcessButton_pb_colorProgress, getColor(R.color.blue_normal)));
+ }
+
} finally {
attr.recycle();
}
@@ -111,7 +119,7 @@ protected void onProgress() {
if(getLoadingText() != null) {
setText(getLoadingText());
}
- setBackgroundCompat(getNormalDrawable());
+ setBackgroundCompat(getProgressDrawable());
}
protected void onCompleteState() {
@@ -152,14 +160,18 @@ public int getMinProgress() {
return mMinProgress;
}
- public GradientDrawable getProgressDrawable() {
- return mProgressDrawable;
+ public GradientDrawable getProgressLineDrawable() {
+ return mProgressLineDrawable;
}
public GradientDrawable getCompleteDrawable() {
return mCompleteDrawable;
}
+ public Drawable getProgressDrawable() {
+ return mProgressDrawable == null ? getNormalDrawable() : mProgressDrawable;
+ }
+
public CharSequence getLoadingText() {
return mLoadingText;
}
@@ -168,14 +180,18 @@ public CharSequence getCompleteText() {
return mCompleteText;
}
- public void setProgressDrawable(GradientDrawable progressDrawable) {
- mProgressDrawable = progressDrawable;
+ public void setProgressLineDrawable(GradientDrawable progressLineDrawable) {
+ mProgressLineDrawable = progressLineDrawable;
}
public void setCompleteDrawable(GradientDrawable completeDrawable) {
mCompleteDrawable = completeDrawable;
}
+ public void setProgressDrawable(GradientDrawable progressDrawable) {
+ mProgressDrawable = progressDrawable;
+ }
+
public void setNormalText(CharSequence normalText) {
super.setNormalText(normalText);
if (mProgress == mMinProgress) {
diff --git a/library/src/main/java/com/dd/processbutton/iml/ActionProcessButton.java b/library/src/main/java/com/dd/processbutton/iml/ActionProcessButton.java
index 730eee0..6692ddc 100644
--- a/library/src/main/java/com/dd/processbutton/iml/ActionProcessButton.java
+++ b/library/src/main/java/com/dd/processbutton/iml/ActionProcessButton.java
@@ -94,8 +94,8 @@ public void setColorScheme(int color1, int color2, int color3, int color4) {
@Override
public void drawProgress(Canvas canvas) {
- if(getBackground() != getNormalDrawable()) {
- setBackgroundDrawable(getNormalDrawable());
+ if(getBackground() != getProgressDrawable()) {
+ setBackgroundDrawable(getProgressDrawable());
}
switch (mMode) {
@@ -122,8 +122,8 @@ private void drawLineProgress(Canvas canvas) {
double indicatorHeightPercent = 0.05; // 5%
int bottom = (int) (getMeasuredHeight() - getMeasuredHeight() * indicatorHeightPercent);
- getProgressDrawable().setBounds(0, bottom, (int) indicatorWidth, getMeasuredHeight());
- getProgressDrawable().draw(canvas);
+ getProgressLineDrawable().setBounds(0, bottom, (int) indicatorWidth, getMeasuredHeight());
+ getProgressLineDrawable().draw(canvas);
}
private void drawEndlessProgress(Canvas canvas) {
diff --git a/library/src/main/java/com/dd/processbutton/iml/GenerateProcessButton.java b/library/src/main/java/com/dd/processbutton/iml/GenerateProcessButton.java
index 09fcbbf..7e4f9bf 100644
--- a/library/src/main/java/com/dd/processbutton/iml/GenerateProcessButton.java
+++ b/library/src/main/java/com/dd/processbutton/iml/GenerateProcessButton.java
@@ -49,8 +49,8 @@ public void drawProgress(Canvas canvas) {
float scale = (float) getProgress() / (float) getMaxProgress();
float indicatorHeight = (float) getMeasuredHeight() * scale;
- getProgressDrawable().setBounds(0, 0, getMeasuredWidth(), (int) indicatorHeight);
- getProgressDrawable().draw(canvas);
+ getProgressLineDrawable().setBounds(0, 0, getMeasuredWidth(), (int) indicatorHeight);
+ getProgressLineDrawable().draw(canvas);
}
}
diff --git a/library/src/main/java/com/dd/processbutton/iml/SubmitProcessButton.java b/library/src/main/java/com/dd/processbutton/iml/SubmitProcessButton.java
index cad5ca5..b3f8d52 100644
--- a/library/src/main/java/com/dd/processbutton/iml/SubmitProcessButton.java
+++ b/library/src/main/java/com/dd/processbutton/iml/SubmitProcessButton.java
@@ -49,8 +49,8 @@ public void drawProgress(Canvas canvas) {
float scale = (float) getProgress() / (float) getMaxProgress();
float indicatorWidth = (float) getMeasuredWidth() * scale;
- getProgressDrawable().setBounds(0, 0, (int) indicatorWidth, getMeasuredHeight());
- getProgressDrawable().draw(canvas);
+ getProgressLineDrawable().setBounds(0, 0, (int) indicatorWidth, getMeasuredHeight());
+ getProgressLineDrawable().draw(canvas);
}
}
diff --git a/library/src/main/res/drawable/rect_progress.xml b/library/src/main/res/drawable/rect_progress.xml
index bf984f3..8ccd30d 100644
--- a/library/src/main/res/drawable/rect_progress.xml
+++ b/library/src/main/res/drawable/rect_progress.xml
@@ -3,5 +3,5 @@
-
+
\ No newline at end of file
diff --git a/library/src/main/res/drawable/rect_progress_line.xml b/library/src/main/res/drawable/rect_progress_line.xml
new file mode 100644
index 0000000..b6da923
--- /dev/null
+++ b/library/src/main/res/drawable/rect_progress_line.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/src/main/res/values/colors.xml b/library/src/main/res/values/colors.xml
index 49fba6a..abc2981 100644
--- a/library/src/main/res/values/colors.xml
+++ b/library/src/main/res/values/colors.xml
@@ -3,8 +3,9 @@
#ff0099cc
#ff33b5e5
#ff99cc00
- #ffaa66cc
+ #ffaa66cc
#ffff4444
+ #ffb74d
#ff00ddff
#ff99cc00
diff --git a/library/src/main/res/values/styles.xml b/library/src/main/res/values/styles.xml
index 4bddb0a..5796c82 100644
--- a/library/src/main/res/values/styles.xml
+++ b/library/src/main/res/values/styles.xml
@@ -3,6 +3,7 @@
+
diff --git a/sample/src/main/res/layout/ac_sign_in.xml b/sample/src/main/res/layout/ac_sign_in.xml
index f0aa7d7..9a1ac0c 100644
--- a/sample/src/main/res/layout/ac_sign_in.xml
+++ b/sample/src/main/res/layout/ac_sign_in.xml
@@ -38,7 +38,8 @@
custom:pb_colorComplete="@color/green_complete"
custom:pb_colorNormal="@color/blue_normal"
custom:pb_colorPressed="@color/blue_pressed"
- custom:pb_colorProgress="@color/purple_progress"
+ custom:pb_colorProgressLine="@color/purple_progress_line"
+ custom:pb_colorProgress="@color/orange_progress"
custom:pb_textComplete="@string/Success"
custom:pb_textProgress="@string/Loading" />