Skip to content

Commit 3464b14

Browse files
committed
Clean up
1 parent 4705d00 commit 3464b14

File tree

6 files changed

+84
-37
lines changed

6 files changed

+84
-37
lines changed

demo/src/main/java/com/jbarat/loadingbutton/demo/MainActivity.java

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,30 +24,56 @@
2424
import com.jbarat.LoadingButton;
2525
import com.jbarat.loadingbutton.R;
2626

27+
import static android.view.View.INVISIBLE;
2728
import static android.view.View.VISIBLE;
2829
import static android.widget.Toast.LENGTH_SHORT;
2930

3031
public class MainActivity extends AppCompatActivity {
3132

32-
@Override
33-
protected void onCreate(Bundle savedInstanceState) {
34-
super.onCreate(savedInstanceState);
35-
setContentView(R.layout.activity_main);
33+
private Button successButton;
34+
private Button failButton;
3635

37-
View content = findViewById(R.id.activity_main);
38-
LoadingButton loadingButton = (LoadingButton) findViewById(R.id.button);
39-
Button successButton = (Button) findViewById(R.id.button2);
40-
Button failButton = (Button) findViewById(R.id.button3);
36+
@Override
37+
protected void onCreate(Bundle savedInstanceState) {
38+
super.onCreate(savedInstanceState);
39+
setContentView(R.layout.activity_main);
4140

42-
loadingButton.setOnInitialClickListener(v -> {
43-
successButton.setVisibility(VISIBLE);
44-
failButton.setVisibility(VISIBLE);
45-
});
41+
View content = findViewById(R.id.activity_main);
42+
LoadingButton loadingButton = (LoadingButton) findViewById(R.id.loadingButton);
43+
successButton = (Button) findViewById(R.id.successButton);
44+
failButton = (Button) findViewById(R.id.failButton);
4645

47-
successButton.setOnClickListener(v -> loadingButton.success());
48-
failButton.setOnClickListener(v -> loadingButton.failure());
46+
loadingButton.setOnInitialClickListener(v -> {
47+
successButton.setVisibility(VISIBLE);
48+
failButton.setVisibility(VISIBLE);
49+
});
4950

50-
loadingButton.setOnSuccessClickListener(view -> Snackbar.make(content, "Success Clicked", LENGTH_SHORT).show());
51-
loadingButton.setOnFailOnClickListener(view -> Snackbar.make(content, "Fail Clicked", LENGTH_SHORT).show());
52-
}
51+
successButton.setOnClickListener(v -> {
52+
loadingButton.success();
53+
hideButtons();
54+
});
55+
failButton.setOnClickListener(v -> {
56+
loadingButton.failure();
57+
hideButtons();
58+
});
59+
60+
loadingButton.setOnSuccessClickListener(view -> {
61+
Snackbar.make(content, "Success Clicked", LENGTH_SHORT).show();
62+
showButtons();
63+
});
64+
loadingButton.setOnFailOnClickListener(view -> {
65+
Snackbar.make(content, "Fail Clicked", LENGTH_SHORT).show();
66+
showButtons();
67+
});
68+
}
69+
70+
private void showButtons() {
71+
successButton.setVisibility(VISIBLE);
72+
failButton.setVisibility(VISIBLE);
73+
}
74+
75+
private void hideButtons() {
76+
successButton.setVisibility(INVISIBLE);
77+
failButton.setVisibility(INVISIBLE);
78+
}
5379
}

demo/src/main/res/layout/activity_main.xml

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
tools:context="com.jbarat.loadingbutton.demo.MainActivity">
1111

1212
<com.jbarat.LoadingButton
13-
android:id="@+id/button"
13+
android:id="@+id/loadingButton"
1414
android:layout_width="0dp"
1515
android:layout_height="80dp"
1616
android:layout_marginEnd="8dp"
@@ -22,37 +22,40 @@
2222
app:layout_constraintRight_toRightOf="parent"
2323
app:layout_constraintTop_toTopOf="parent"
2424
app:lb_color="@color/colorPrimary"
25-
app:lb_failure_text="Fail!"
26-
app:lb_init_text="Push Me!"
27-
app:lb_progress_color="@color/colorAccent"
28-
app:lb_success_text="Great Success!"/>
25+
app:lb_init_text="@string/button.loading.init"
26+
app:lb_success_text="@string/button.loading.success"
27+
app:lb_failure_text="@string/button.loading.fail"
28+
app:lb_anim_duration="500"
29+
app:lb_success_color="#2ac500"
30+
app:lb_failure_color="#ff2700"
31+
app:lb_progress_color="@color/colorAccent"/>
2932

3033
<Button
31-
android:id="@+id/button2"
34+
android:id="@+id/successButton"
3235
android:layout_width="wrap_content"
3336
android:layout_height="wrap_content"
3437
android:layout_marginLeft="8dp"
3538
android:layout_marginStart="8dp"
3639
android:layout_marginTop="8dp"
37-
android:text="Success Callback"
40+
android:text="@string/button.success"
3841
android:visibility="invisible"
3942
app:layout_constraintLeft_toLeftOf="parent"
40-
app:layout_constraintTop_toBottomOf="@+id/button"/>
43+
app:layout_constraintTop_toBottomOf="@+id/loadingButton"/>
4144

4245
<Button
43-
android:id="@+id/button3"
46+
android:id="@+id/failButton"
4447
android:layout_width="wrap_content"
4548
android:layout_height="wrap_content"
4649
android:layout_marginEnd="8dp"
4750
android:layout_marginLeft="8dp"
4851
android:layout_marginRight="8dp"
4952
android:layout_marginStart="8dp"
5053
android:layout_marginTop="8dp"
51-
android:text="Fail Callback"
54+
android:text="@string/button.fail"
5255
android:visibility="invisible"
5356
app:layout_constraintHorizontal_bias="1.0"
54-
app:layout_constraintLeft_toRightOf="@+id/button2"
57+
app:layout_constraintLeft_toRightOf="@+id/successButton"
5558
app:layout_constraintRight_toRightOf="parent"
56-
app:layout_constraintTop_toBottomOf="@+id/button"/>
59+
app:layout_constraintTop_toBottomOf="@+id/loadingButton"/>
5760

5861
</android.support.constraint.ConstraintLayout>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
<resources>
22
<string name="app_name">LoadingButton</string>
3+
<string name="button.fail">Fail Callback</string>
4+
<string name="button.success">Success Callback</string>
5+
<string name="button.loading.init">Push Me!</string>
6+
<string name="button.loading.fail">Fail!</string>
7+
<string name="button.loading.success">Great Success!</string>
38
</resources>

lib/src/main/java/com/jbarat/LoadingButton.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public class LoadingButton extends FrameLayout {
4646

4747
enum State {Initial, InProgress, InProgressAfterSuccessResult, InProgressAfterFailResult, Fail, Success}
4848

49+
private static final int CIRCLE_TO_TEXT_DURATION_DEFAULT = 500;
50+
4951
private State state;
5052

5153
private LoadingButtonInitialOnClickListener loadingButtonInitialOnClickListener;
@@ -58,6 +60,10 @@ enum State {Initial, InProgress, InProgressAfterSuccessResult, InProgressAfterFa
5860
private ImageView circle;
5961
private TextView resultText;
6062

63+
private int circleToTextDuration;
64+
private int failColor;
65+
private int successColor;
66+
6167
private String successText;
6268
private String failText;
6369

@@ -97,14 +103,14 @@ public void success() {
97103
state = InProgressAfterSuccessResult;
98104

99105
ValueAnimator va = ofFloat(0, 1);
100-
va.setDuration(500);
106+
va.setDuration(circleToTextDuration);
101107
va.addUpdateListener(new CircleAndResultCircleAlphaAnimatorUpdateListener());
102108
va.addListener(new CircleToResultCircleWithTextAnimatorListener());
103109
va.start();
104110

105111
progress.setVisibility(GONE);
106112
circleResult.setImageResource(R.drawable.ic_check_circle);
107-
circleResult.setColorFilter(Color.GREEN);
113+
circleResult.setColorFilter(successColor);
108114
resultText.setText(successText);
109115
}
110116
}
@@ -114,14 +120,14 @@ public void failure() {
114120
state = InProgressAfterFailResult;
115121

116122
ValueAnimator va = ofFloat(0, 1);
117-
va.setDuration(500);
123+
va.setDuration(circleToTextDuration);
118124
va.addUpdateListener(new CircleAndResultCircleAlphaAnimatorUpdateListener());
119125
va.addListener(new CircleToResultCircleWithTextAnimatorListener());
120126
va.start();
121127

122128
progress.setVisibility(GONE);
123129
circleResult.setImageResource(R.drawable.ic_cancel_circle);
124-
circleResult.setColorFilter(Color.RED);
130+
circleResult.setColorFilter(failColor);
125131
resultText.setText(failText);
126132
}
127133
}
@@ -165,21 +171,25 @@ private void initAttributes(Context context, AttributeSet attrs) {
165171
successText = typedArray.getString(R.styleable.LoadingButton_lb_success_text);
166172
failText = typedArray.getString(R.styleable.LoadingButton_lb_failure_text);
167173

174+
failColor= typedArray.getColor(R.styleable.LoadingButton_lb_failure_color,Color.RED);
175+
successColor= typedArray.getColor(R.styleable.LoadingButton_lb_success_color,Color.GREEN);
176+
177+
circleToTextDuration = typedArray.getInteger(R.styleable.LoadingButton_lb_anim_duration, CIRCLE_TO_TEXT_DURATION_DEFAULT);
168178
typedArray.recycle();
169179
}
170180

171181
private void returnToInProgress() {
172182
state = InProgress;
173183

174184
ValueAnimator va = ofFloat(1, 0);
175-
va.setDuration(500);
185+
va.setDuration(circleToTextDuration);
176186
va.addUpdateListener(new MoveResultTextAndCircleAnimatorUpdateListener());
177187
va.addListener(new AnimatorListenerAdapter() {
178188

179189
@Override
180190
public void onAnimationEnd(Animator animation) {
181191
ValueAnimator va = ofFloat(1, 0);
182-
va.setDuration(500);
192+
va.setDuration(circleToTextDuration);
183193
va.addUpdateListener(new CircleAndResultCircleAlphaAnimatorUpdateListener());
184194
va.addListener(new ShowProgressBarOnFinishAnimationListener());
185195
va.start();
@@ -244,7 +254,7 @@ public void onAnimationEnd(Animator animation) {
244254
(originalResultTextX - circleHalfWidth) + 56;
245255

246256
ValueAnimator va = ofFloat(0, 1);
247-
va.setDuration(500);
257+
va.setDuration(circleToTextDuration);
248258
va.addListener(new ResultToFinalStateAnimatorListener());
249259
va.addUpdateListener(new MoveResultTextAndCircleAnimatorUpdateListener());
250260
va.start();

lib/src/main/java/com/jbarat/LoadingButtonInitialOnClickListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@
1818
import android.view.View;
1919

2020
public interface LoadingButtonInitialOnClickListener {
21-
void onClick(View v);
21+
void onClick(View view);
2222
}

lib/src/main/res/values/attrs.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@
66
<attr name="lb_init_text" format="string" />
77
<attr name="lb_success_text" format="string" />
88
<attr name="lb_failure_text" format="string" />
9+
<attr name="lb_success_color" format="color" />
10+
<attr name="lb_failure_color" format="color" />
11+
<attr name="lb_anim_duration" format="integer" />
912
</declare-styleable>
1013
</resources>

0 commit comments

Comments
 (0)