Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4486680

Browse files
author
dinuscxj
committed
optimize code and adjust the permission of some methods
1 parent 5083613 commit 4486680

25 files changed

+108
-156
lines changed

app/src/main/java/app/dinus/com/example/AnimalActivity.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@
44
import android.content.Intent;
55
import android.os.Bundle;
66
import android.support.v7.app.AppCompatActivity;
7-
import android.widget.ImageView;
8-
9-
import app.dinus.com.loadingdrawable.LoadingDrawable;
10-
import app.dinus.com.loadingdrawable.render.animal.FishLoadingRenderer;
11-
import app.dinus.com.loadingdrawable.render.animal.GhostsEyeLoadingRenderer;
127

138
public class AnimalActivity extends AppCompatActivity {
149
public static void startActivity(Context context) {

app/src/main/java/app/dinus/com/example/CircleJumpActivity.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44
import android.content.Intent;
55
import android.os.Bundle;
66
import android.support.v7.app.AppCompatActivity;
7-
import android.widget.ImageView;
8-
9-
import app.dinus.com.loadingdrawable.LoadingDrawable;
10-
import app.dinus.com.loadingdrawable.render.circle.jump.CollisionLoadingRenderer;
11-
import app.dinus.com.loadingdrawable.render.circle.jump.DanceLoadingRenderer;
12-
import app.dinus.com.loadingdrawable.render.circle.jump.GuardLoadingRenderer;
13-
import app.dinus.com.loadingdrawable.render.circle.jump.SwapLoadingRenderer;
147

158
public class CircleJumpActivity extends AppCompatActivity {
169
public static void startActivity(Context context) {

app/src/main/java/app/dinus/com/example/CircleRotateActivity.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44
import android.content.Intent;
55
import android.os.Bundle;
66
import android.support.v7.app.AppCompatActivity;
7-
import android.widget.ImageView;
8-
9-
import app.dinus.com.loadingdrawable.LoadingDrawable;
10-
import app.dinus.com.loadingdrawable.render.circle.rotate.GearLoadingRenderer;
11-
import app.dinus.com.loadingdrawable.render.circle.rotate.LevelLoadingRenderer;
12-
import app.dinus.com.loadingdrawable.render.circle.rotate.MaterialLoadingRenderer;
13-
import app.dinus.com.loadingdrawable.render.circle.rotate.WhorlLoadingRenderer;
147

158
public class CircleRotateActivity extends AppCompatActivity {
169
public static void startActivity(Context context) {

app/src/main/java/app/dinus/com/example/GoodsActivity.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,6 @@
44
import android.content.Intent;
55
import android.os.Bundle;
66
import android.support.v7.app.AppCompatActivity;
7-
import android.widget.ImageView;
8-
9-
import app.dinus.com.loadingdrawable.LoadingDrawable;
10-
import app.dinus.com.loadingdrawable.render.animal.GhostsEyeLoadingRenderer;
11-
import app.dinus.com.loadingdrawable.render.goods.BalloonLoadingRenderer;
12-
import app.dinus.com.loadingdrawable.render.goods.WaterBottleLoadingRenderer;
137

148
public class GoodsActivity extends AppCompatActivity {
159

app/src/main/java/app/dinus/com/example/SceneryActivity.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@
44
import android.content.Intent;
55
import android.os.Bundle;
66
import android.support.v7.app.AppCompatActivity;
7-
import android.widget.ImageView;
8-
9-
import app.dinus.com.loadingdrawable.LoadingDrawable;
10-
import app.dinus.com.loadingdrawable.render.scenery.DayNightLoadingRenderer;
11-
import app.dinus.com.loadingdrawable.render.scenery.ElectricFanLoadingRenderer;
127

138
public class SceneryActivity extends AppCompatActivity {
149

app/src/main/java/app/dinus/com/example/ShapeChangeActivity.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@
44
import android.content.Intent;
55
import android.os.Bundle;
66
import android.support.v7.app.AppCompatActivity;
7-
import android.widget.ImageView;
8-
9-
import app.dinus.com.loadingdrawable.LoadingDrawable;
10-
import app.dinus.com.loadingdrawable.render.shapechange.CircleBroodLoadingRenderer;
11-
import app.dinus.com.loadingdrawable.render.shapechange.CoolWaitLoadingRenderer;
127

138
public class ShapeChangeActivity extends AppCompatActivity {
149

library/src/main/java/app/dinus/com/loadingdrawable/LoadingView.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.view.View;
77
import android.widget.ImageView;
88

9+
import app.dinus.com.loadingdrawable.render.LoadingDrawable;
910
import app.dinus.com.loadingdrawable.render.LoadingRenderer;
1011
import app.dinus.com.loadingdrawable.render.LoadingRendererFactory;
1112

library/src/main/java/app/dinus/com/loadingdrawable/LoadingDrawable.java renamed to library/src/main/java/app/dinus/com/loadingdrawable/render/LoadingDrawable.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package app.dinus.com.loadingdrawable;
1+
package app.dinus.com.loadingdrawable.render;
22

33
import android.graphics.Canvas;
44
import android.graphics.ColorFilter;
@@ -70,11 +70,11 @@ public boolean isRunning() {
7070

7171
@Override
7272
public int getIntrinsicHeight() {
73-
return (int) mLoadingRender.getHeight();
73+
return (int) mLoadingRender.mHeight;
7474
}
7575

7676
@Override
7777
public int getIntrinsicWidth() {
78-
return (int) mLoadingRender.getWidth();
78+
return (int) mLoadingRender.mWidth;
7979
}
8080
}

library/src/main/java/app/dinus/com/loadingdrawable/render/LoadingRenderer.java

Lines changed: 47 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
import android.graphics.ColorFilter;
88
import android.graphics.Rect;
99
import android.graphics.drawable.Drawable;
10-
import android.util.DisplayMetrics;
10+
import android.os.Handler;
11+
import android.os.Looper;
12+
import android.util.Log;
1113
import android.view.animation.Animation;
12-
import android.view.animation.Interpolator;
1314
import android.view.animation.LinearInterpolator;
1415

1516
import app.dinus.com.loadingdrawable.DensityUtil;
@@ -18,51 +19,71 @@ public abstract class LoadingRenderer {
1819
private static final long ANIMATION_DURATION = 1333;
1920
private static final float DEFAULT_SIZE = 56.0f;
2021

21-
protected float mWidth;
22-
protected float mHeight;
22+
private final ValueAnimator.AnimatorUpdateListener mAnimatorUpdateListener
23+
= new ValueAnimator.AnimatorUpdateListener() {
24+
@Override
25+
public void onAnimationUpdate(ValueAnimator animation) {
26+
computeRender((float) animation.getAnimatedValue());
27+
invalidateSelf();
28+
}
29+
};
2330

24-
private long mDuration;
2531
private Drawable.Callback mCallback;
2632
private ValueAnimator mRenderAnimator;
2733

34+
protected long mDuration;
35+
36+
protected float mWidth;
37+
protected float mHeight;
38+
2839
public LoadingRenderer(Context context) {
29-
setupDefaultParams(context);
40+
initParams(context);
3041
setupAnimators();
3142
}
3243

33-
public abstract void draw(Canvas canvas, Rect bounds);
44+
protected abstract void draw(Canvas canvas, Rect bounds);
3445

35-
public abstract void computeRender(float renderProgress);
46+
protected abstract void computeRender(float renderProgress);
3647

37-
public abstract void setAlpha(int alpha);
48+
protected abstract void setAlpha(int alpha);
3849

39-
public abstract void setColorFilter(ColorFilter cf);
50+
protected abstract void setColorFilter(ColorFilter cf);
4051

41-
public abstract void reset();
52+
protected abstract void reset();
4253

43-
public void start() {
54+
protected void addRenderListener(Animator.AnimatorListener animatorListener) {
55+
mRenderAnimator.addListener(animatorListener);
56+
}
57+
58+
void start() {
4459
reset();
45-
setDuration(mDuration);
60+
mRenderAnimator.addUpdateListener(mAnimatorUpdateListener);
61+
62+
mRenderAnimator.setRepeatCount(ValueAnimator.INFINITE);
63+
mRenderAnimator.setDuration(mDuration);
4664
mRenderAnimator.start();
4765
}
4866

49-
public void stop() {
50-
mRenderAnimator.cancel();
67+
void stop() {
68+
// if I just call mRenderAnimator.end(),
69+
// it will always call the method onAnimationUpdate(ValueAnimator animation)
70+
// why ? if you know why please send email to me ([email protected])
71+
mRenderAnimator.removeUpdateListener(mAnimatorUpdateListener);
72+
73+
mRenderAnimator.setRepeatCount(0);
74+
mRenderAnimator.setDuration(0);
75+
mRenderAnimator.end();
5176
}
5277

53-
public boolean isRunning() {
78+
boolean isRunning() {
5479
return mRenderAnimator.isRunning();
5580
}
5681

57-
public void setCallback(Drawable.Callback callback) {
82+
void setCallback(Drawable.Callback callback) {
5883
this.mCallback = callback;
5984
}
6085

61-
protected void invalidateSelf() {
62-
mCallback.invalidateDrawable(null);
63-
}
64-
65-
private void setupDefaultParams(Context context) {
86+
private void initParams(Context context) {
6687
mWidth = DensityUtil.dip2px(context, DEFAULT_SIZE);
6788
mHeight = DensityUtil.dip2px(context, DEFAULT_SIZE);
6889

@@ -73,44 +94,14 @@ private void setupAnimators() {
7394
mRenderAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);
7495
mRenderAnimator.setRepeatCount(Animation.INFINITE);
7596
mRenderAnimator.setRepeatMode(Animation.RESTART);
97+
mRenderAnimator.setDuration(mDuration);
7698
//fuck you! the default interpolator is AccelerateDecelerateInterpolator
7799
mRenderAnimator.setInterpolator(new LinearInterpolator());
78-
mRenderAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
79-
@Override
80-
public void onAnimationUpdate(ValueAnimator animation) {
81-
computeRender((float) animation.getAnimatedValue());
82-
invalidateSelf();
83-
}
84-
});
85-
86-
}
87-
88-
protected void addRenderListener(Animator.AnimatorListener animatorListener) {
89-
mRenderAnimator.addListener(animatorListener);
90-
}
91-
92-
public float getWidth() {
93-
return mWidth;
94-
}
95-
96-
public void setWidth(float width) {
97-
this.mWidth = width;
98-
}
99-
100-
public float getHeight() {
101-
return mHeight;
102-
}
103-
104-
public void setHeight(float height) {
105-
this.mHeight = height;
100+
mRenderAnimator.addUpdateListener(mAnimatorUpdateListener);
106101
}
107102

108-
public long getDuration() {
109-
return mDuration;
103+
private void invalidateSelf() {
104+
mCallback.invalidateDrawable(null);
110105
}
111106

112-
public void setDuration(long duration) {
113-
this.mDuration = duration;
114-
mRenderAnimator.setDuration(mDuration);
115-
}
116107
}

library/src/main/java/app/dinus/com/loadingdrawable/render/animal/FishLoadingRenderer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ private void init(Context context) {
9191

9292
mColor = DEFAULT_COLOR;
9393

94-
setDuration(ANIMATION_DURATION);
94+
mDuration = ANIMATION_DURATION;
9595
}
9696

9797
private void setupPaint() {

library/src/main/java/app/dinus/com/loadingdrawable/render/animal/GhostsEyeLoadingRenderer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ private void init(Context context) {
8787

8888
mColor = DEFAULT_COLOR;
8989

90-
setDuration(ANIMATION_DURATION);
90+
mDuration = ANIMATION_DURATION;
9191
}
9292

9393
private void setupPaint() {

library/src/main/java/app/dinus/com/loadingdrawable/render/circle/jump/CollisionLoadingRenderer.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public void computeRender(float renderProgress) {
136136
float startLeftOffsetProgress = renderProgress / DURATION_OFFSET;
137137
mStartXOffsetProgress = DECELERATE_INTERPOLATOR.getInterpolation(startLeftOffsetProgress);
138138

139-
invalidateSelf();
139+
140140
return;
141141
}
142142

@@ -146,7 +146,7 @@ public void computeRender(float renderProgress) {
146146
float startRightOffsetProgress = (renderProgress - START_LEFT_DURATION_OFFSET) / DURATION_OFFSET;
147147
mStartXOffsetProgress = ACCELERATE_INTERPOLATOR.getInterpolation(1.0f - startRightOffsetProgress);
148148

149-
invalidateSelf();
149+
150150
return;
151151
}
152152

@@ -156,7 +156,7 @@ public void computeRender(float renderProgress) {
156156
float endRightOffsetProgress = (renderProgress - START_RIGHT_DURATION_OFFSET) / DURATION_OFFSET;
157157
mEndXOffsetProgress = DECELERATE_INTERPOLATOR.getInterpolation(endRightOffsetProgress);
158158

159-
invalidateSelf();
159+
160160
return;
161161
}
162162

@@ -166,21 +166,21 @@ public void computeRender(float renderProgress) {
166166
float endRightOffsetProgress = (renderProgress - END_RIGHT_DURATION_OFFSET) / DURATION_OFFSET;
167167
mEndXOffsetProgress = ACCELERATE_INTERPOLATOR.getInterpolation(1 - endRightOffsetProgress);
168168

169-
invalidateSelf();
169+
170170
return;
171171
}
172172
}
173173

174174
@Override
175175
public void setAlpha(int alpha) {
176176
mPaint.setAlpha(alpha);
177-
invalidateSelf();
177+
178178
}
179179

180180
@Override
181181
public void setColorFilter(ColorFilter cf) {
182182
mPaint.setColorFilter(cf);
183-
invalidateSelf();
183+
184184
}
185185

186186
@Override

library/src/main/java/app/dinus/com/loadingdrawable/render/circle/jump/DanceLoadingRenderer.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ private void init(Context context) {
9595
mDanceBallRadius = DensityUtil.dip2px(context, DEFAULT_DANCE_BALL_RADIUS);
9696

9797
setColor(DEFAULT_COLOR);
98-
setInsets((int) getWidth(), (int) getHeight());
99-
setDuration(ANIMATION_DURATION);
98+
setInsets((int) mWidth, (int) mHeight);
99+
mDuration = ANIMATION_DURATION;
100100
}
101101

102102
private void setupPaint() {
@@ -261,13 +261,13 @@ public void computeRender(float renderProgress) {
261261
@Override
262262
public void setAlpha(int alpha) {
263263
mPaint.setAlpha(alpha);
264-
invalidateSelf();
264+
265265
}
266266

267267
@Override
268268
public void setColorFilter(ColorFilter cf) {
269269
mPaint.setColorFilter(cf);
270-
invalidateSelf();
270+
271271
}
272272

273273
@Override
@@ -283,12 +283,12 @@ public void setColor(int color) {
283283

284284
public void setRotation(float rotation) {
285285
mRotation = rotation;
286-
invalidateSelf();
286+
287287
}
288288

289289
public void setDanceBallRadius(float danceBallRadius) {
290290
this.mDanceBallRadius = danceBallRadius;
291-
invalidateSelf();
291+
292292
}
293293

294294
public float getDanceBallRadius() {

0 commit comments

Comments
 (0)