@@ -61,41 +61,42 @@ private void applyStyle(Context context, AttributeSet attrs, int defStyleAttr, i
61
61
mCircular = a .getBoolean (R .styleable .ProgressView_pv_circular , true );
62
62
mProgressId = a .getResourceId (R .styleable .ProgressView_pv_progressStyle , 0 );
63
63
64
- a .recycle ();
65
-
66
64
if (mProgressId == 0 )
67
65
mProgressId = mCircular ? R .style .Material_Drawable_CircularProgress : R .style .Material_Drawable_LinearProgress ;
68
66
69
- if (mCircular )
67
+ if (mCircular ) {
70
68
mProgressDrawable = new CircularProgressDrawable .Builder (context , mProgressId ).build ();
71
- else
69
+ if (a .hasValue (R .styleable .ProgressView_pv_progressMode ))
70
+ ((CircularProgressDrawable )mProgressDrawable ).setProgressMode (a .getInt (R .styleable .ProgressView_pv_progressMode , MODE_INDETERMINATE ));
71
+ }
72
+ else {
72
73
mProgressDrawable = new LinearProgressDrawable .Builder (context , mProgressId ).build ();
74
+ if (a .hasValue (R .styleable .ProgressView_pv_progressMode ))
75
+ ((LinearProgressDrawable )mProgressDrawable ).setProgressMode (a .getInt (R .styleable .ProgressView_pv_progressMode , MODE_INDETERMINATE ));
76
+ }
77
+
78
+ if (a .hasValue (R .styleable .ProgressView_pv_progress ))
79
+ setProgress (a .getFloat (R .styleable .ProgressView_pv_progress , 0 ));
80
+
81
+ if (a .hasValue (R .styleable .ProgressView_pv_secondaryProgress ))
82
+ setSecondaryProgress (a .getFloat (R .styleable .ProgressView_pv_secondaryProgress , 0 ));
83
+
84
+ a .recycle ();
73
85
74
86
if (android .os .Build .VERSION .SDK_INT >= android .os .Build .VERSION_CODES .JELLY_BEAN )
75
87
setBackground (mProgressDrawable );
76
88
else
77
89
setBackgroundDrawable (mProgressDrawable );
78
90
}
79
-
80
- @ Override
81
- public void setVisibility (int v ) {
82
- if (getVisibility () != v ) {
83
- super .setVisibility (v );
84
-
85
- if (getProgressMode () == MODE_INDETERMINATE && mAutostart ) {
86
- if (v == GONE || v == INVISIBLE )
87
- stop ();
88
- else
89
- start ();
90
- }
91
- }
92
- }
93
-
91
+
94
92
@ Override
95
93
protected void onVisibilityChanged (@ NonNull View changedView , int visibility ) {
96
94
super .onVisibilityChanged (changedView , visibility );
97
95
98
- if (getProgressMode () == MODE_INDETERMINATE && mAutostart ) {
96
+ if (changedView != this )
97
+ return ;
98
+
99
+ if (mAutostart ) {
99
100
if (visibility == GONE || visibility == INVISIBLE )
100
101
stop ();
101
102
else
@@ -106,18 +107,18 @@ protected void onVisibilityChanged(@NonNull View changedView, int visibility) {
106
107
@ Override
107
108
protected void onAttachedToWindow () {
108
109
super .onAttachedToWindow ();
109
- if ( getProgressMode () == MODE_INDETERMINATE && mAutostart )
110
+ if ( getVisibility () == View . VISIBLE && mAutostart )
110
111
start ();
111
112
}
112
113
113
114
@ Override
114
115
protected void onDetachedFromWindow () {
115
- if (getProgressMode () == MODE_INDETERMINATE && mAutostart )
116
+ if (mAutostart )
116
117
stop ();
117
118
118
119
super .onDetachedFromWindow ();
119
120
}
120
-
121
+
121
122
public int getProgressMode (){
122
123
if (mCircular )
123
124
return ((CircularProgressDrawable )mProgressDrawable ).getProgressMode ();
0 commit comments