Skip to content

Commit

Permalink
[Refactor] Add annotations and final wherever possible.
Browse files Browse the repository at this point in the history
  • Loading branch information
zhanghai committed Oct 28, 2018
1 parent ad68678 commit 4dac4ab
Show file tree
Hide file tree
Showing 23 changed files with 285 additions and 123 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public void setUseIntrinsicPadding(boolean useIntrinsicPadding) {
getIntrinsicPaddingDrawable().setUseIntrinsicPadding(useIntrinsicPadding);
}

@NonNull
private IntrinsicPaddingDrawable getIntrinsicPaddingDrawable() {
return (IntrinsicPaddingDrawable) getCurrent();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import android.annotation.SuppressLint;
import android.graphics.Path;

import androidx.annotation.NonNull;
import me.zhanghai.android.materialprogressbar.internal.ObjectAnimatorCompat;

/**
Expand Down Expand Up @@ -81,7 +82,8 @@ private Animators() {}
* @param target The object whose properties are to be animated.
* @return An Animator object that is set up to behave the same as the its native counterpart.
*/
public static Animator createIndeterminateHorizontalRect1(Object target) {
@NonNull
public static Animator createIndeterminateHorizontalRect1(@NonNull Object target) {

ObjectAnimator translateXAnimator = ObjectAnimatorCompat.ofFloat(target, "translateX", null,
PATH_INDETERMINATE_HORIZONTAL_RECT1_TRANSLATE_X);
Expand Down Expand Up @@ -109,7 +111,8 @@ public static Animator createIndeterminateHorizontalRect1(Object target) {
* @param target The object whose properties are to be animated.
* @return An Animator object that is set up to behave the same as the its native counterpart.
*/
public static Animator createIndeterminateHorizontalRect2(Object target) {
@NonNull
public static Animator createIndeterminateHorizontalRect2(@NonNull Object target) {

ObjectAnimator translateXAnimator = ObjectAnimatorCompat.ofFloat(target, "translateX", null,
PATH_INDETERMINATE_HORIZONTAL_RECT2_TRANSLATE_X);
Expand All @@ -136,7 +139,8 @@ public static Animator createIndeterminateHorizontalRect2(Object target) {
* @param target The object whose properties are to be animated.
* @return An Animator object that is set up to behave the same as the its native counterpart.
*/
public static Animator createIndeterminate(Object target) {
@NonNull
public static Animator createIndeterminate(@NonNull Object target) {

@SuppressLint("ObjectAnimatorBinding")
ObjectAnimator trimPathStartAnimator = ObjectAnimator.ofFloat(target, "trimPathStart", 0,
Expand Down Expand Up @@ -172,7 +176,8 @@ public static Animator createIndeterminate(Object target) {
* @param target The object whose properties are to be animated.
* @return An Animator object that is set up to behave the same as the its native counterpart.
*/
public static Animator createIndeterminateRotation(Object target) {
@NonNull
public static Animator createIndeterminateRotation(@NonNull Object target) {
@SuppressLint("ObjectAnimatorBinding")
ObjectAnimator rotationAnimator = ObjectAnimator.ofFloat(target, "rotation", 0, 720);
rotationAnimator.setDuration(6665);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,27 @@
import android.graphics.drawable.Drawable;

import androidx.annotation.ColorInt;
import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

abstract class BaseDrawable extends Drawable implements TintableDrawable {

protected int mAlpha = 0xFF;
@IntRange(from = 0, to = 255)
protected int mAlpha = 255;
@Nullable
protected ColorFilter mColorFilter;
@Nullable
protected ColorStateList mTintList;
@NonNull
protected PorterDuff.Mode mTintMode = PorterDuff.Mode.SRC_IN;
@Nullable
protected PorterDuffColorFilter mTintFilter;

private DummyConstantState mConstantState = new DummyConstantState();
@NonNull
private final DummyConstantState mConstantState = new DummyConstantState();

@IntRange(from = 0, to = 255)
@Override
public int getAlpha() {
return mAlpha;
Expand All @@ -38,7 +46,7 @@ public int getAlpha() {
* {@inheritDoc}
*/
@Override
public void setAlpha(int alpha) {
public void setAlpha(@IntRange(from = 0, to = 255) int alpha) {
if (mAlpha != alpha) {
mAlpha = alpha;
invalidateSelf();
Expand All @@ -48,6 +56,7 @@ public void setAlpha(int alpha) {
/**
* {@inheritDoc}
*/
@Nullable
@Override
public ColorFilter getColorFilter() {
return mColorFilter;
Expand Down Expand Up @@ -98,7 +107,7 @@ public boolean isStateful() {
}

@Override
protected boolean onStateChange(int[] state) {
protected boolean onStateChange(@NonNull int[] state) {
return updateTintFilter();
}

Expand Down Expand Up @@ -129,7 +138,7 @@ public int getOpacity() {
* {@inheritDoc}
*/
@Override
public void draw(Canvas canvas) {
public void draw(@NonNull Canvas canvas) {

Rect bounds = getBounds();
if (bounds.width() == 0 || bounds.height() == 0) {
Expand All @@ -142,17 +151,19 @@ public void draw(Canvas canvas) {
canvas.restoreToCount(saveCount);
}

@Nullable
protected ColorFilter getColorFilterForDrawing() {
return mColorFilter != null ? mColorFilter : mTintFilter;
}

protected abstract void onDraw(Canvas canvas, int width, int height);
protected abstract void onDraw(@NonNull Canvas canvas, int width, int height);

// Workaround LayerDrawable.ChildDrawable which calls getConstantState().newDrawable()
// without checking for null.
// We are never inflated from XML so the protocol of ConstantState does not apply to us. In
// order to make LayerDrawable happy, we return ourselves from DummyConstantState.newDrawable().

@NonNull
@Override
public ConstantState getConstantState() {
return mConstantState;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,17 @@
import android.graphics.Color;
import android.graphics.drawable.Animatable;

import androidx.annotation.NonNull;
import me.zhanghai.android.materialprogressbar.internal.ThemeUtils;

abstract class BaseIndeterminateProgressDrawable extends BaseProgressDrawable
implements Animatable {

@NonNull
protected Animator[] mAnimators;

@SuppressLint("NewApi")
public BaseIndeterminateProgressDrawable(Context context) {
public BaseIndeterminateProgressDrawable(@NonNull Context context) {
int controlActivatedColor = ThemeUtils.getColorFromAttrRes(R.attr.colorControlActivated,
Color.BLACK, context);
// setTint() has been overridden for compatibility; DrawableCompat won't work because
Expand All @@ -32,7 +34,7 @@ public BaseIndeterminateProgressDrawable(Context context) {
* {@inheritDoc}
*/
@Override
public void draw(Canvas canvas) {
public void draw(@NonNull Canvas canvas) {
super.draw(canvas);

if (isStarted()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,16 @@
import android.graphics.Color;
import android.graphics.Paint;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

abstract class BasePaintDrawable extends BaseDrawable {

@Nullable
private Paint mPaint;

@Override
protected final void onDraw(Canvas canvas, int width, int height) {
protected final void onDraw(@NonNull Canvas canvas, int width, int height) {

if (mPaint == null) {
mPaint = new Paint();
Expand All @@ -28,7 +32,8 @@ protected final void onDraw(Canvas canvas, int width, int height) {
onDraw(canvas, width, height, mPaint);
}

protected abstract void onPreparePaint(Paint paint);
protected abstract void onPreparePaint(@NonNull Paint paint);

protected abstract void onDraw(Canvas canvas, int width, int height, Paint paint);
protected abstract void onDraw(@NonNull Canvas canvas, int width, int height,
@NonNull Paint paint);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import android.util.Log;

import androidx.annotation.ColorInt;
import androidx.annotation.FloatRange;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.graphics.ColorUtils;
Expand All @@ -27,13 +28,17 @@ class BaseProgressLayerDrawable<
extends LayerDrawable implements IntrinsicPaddingDrawable, MaterialProgressDrawable,
ShowBackgroundDrawable, TintableDrawable {

@FloatRange(from = 0, to = 1)
private float mBackgroundAlpha;

private BackgroundDrawableType mBackgroundDrawable;
private ProgressDrawableType mSecondaryProgressDrawable;
private ProgressDrawableType mProgressDrawable;
@NonNull
private final BackgroundDrawableType mBackgroundDrawable;
@NonNull
private final ProgressDrawableType mSecondaryProgressDrawable;
@NonNull
private final ProgressDrawableType mProgressDrawable;

public BaseProgressLayerDrawable(Drawable[] layers, Context context) {
public BaseProgressLayerDrawable(@NonNull Drawable[] layers, @NonNull Context context) {
super(layers);

mBackgroundAlpha = ThemeUtils.getFloatFromAttrRes(android.R.attr.disabledAlpha, 0, context);
Expand Down Expand Up @@ -116,7 +121,7 @@ public void setTintList(@Nullable ColorStateList tint) {
Log.w(getClass().getSimpleName(), "setTintList() called with a non-opaque" +
" ColorStateList, its original alpha will be discarded");
}
backgroundTint = tint.withAlpha(Math.round(0xFF * mBackgroundAlpha));
backgroundTint = tint.withAlpha(Math.round(mBackgroundAlpha * 255));
} else {
backgroundTint = null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,22 @@
import android.graphics.Paint;
import android.graphics.RectF;

import androidx.annotation.NonNull;

abstract class BaseSingleCircularProgressDrawable extends BaseProgressDrawable {

private static final RectF RECT_BOUND = new RectF(-21, -21, 21, 21);
private static final RectF RECT_PADDED_BOUND = new RectF(-24, -24, 24, 24);
private static final RectF RECT_PROGRESS = new RectF(-19, -19, 19, 19);

@Override
protected void onPreparePaint(Paint paint) {
protected void onPreparePaint(@NonNull Paint paint) {
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(4);
}

@Override
protected void onDraw(Canvas canvas, int width, int height, Paint paint) {
protected void onDraw(@NonNull Canvas canvas, int width, int height, @NonNull Paint paint) {

if (mUseIntrinsicPadding) {
canvas.scale(width / RECT_PADDED_BOUND.width(), height / RECT_PADDED_BOUND.height());
Expand All @@ -35,9 +37,10 @@ protected void onDraw(Canvas canvas, int width, int height, Paint paint) {
onDrawRing(canvas, paint);
}

protected abstract void onDrawRing(Canvas canvas, Paint paint);
protected abstract void onDrawRing(@NonNull Canvas canvas, @NonNull Paint paint);

protected void drawRing(Canvas canvas, Paint paint, float startAngle, float sweepAngle) {
protected void drawRing(@NonNull Canvas canvas, @NonNull Paint paint, float startAngle,
float sweepAngle) {
// startAngle starts at 3 o'clock on a watch.
canvas.drawArc(RECT_PROGRESS, -90 + startAngle, sweepAngle, false, paint);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,32 @@
import android.graphics.Paint;
import android.graphics.RectF;

import androidx.annotation.Dimension;
import androidx.annotation.NonNull;
import androidx.annotation.Px;

class BaseSingleHorizontalProgressDrawable extends BaseProgressDrawable {

@Dimension(unit = Dimension.DP)
private static final int PROGRESS_INTRINSIC_HEIGHT_DP = 4;
@Dimension(unit = Dimension.DP)
private static final int PADDED_INTRINSIC_HEIGHT_DP = 16;
protected static final RectF RECT_BOUND = new RectF(-180, -1, 180, 1);
private static final RectF RECT_PADDED_BOUND = new RectF(-180, -4, 180, 4);

private int mProgressIntrinsicHeight;
private int mPaddedIntrinsicHeight;
@Px
private final int mProgressIntrinsicHeight;
@Px
private final int mPaddedIntrinsicHeight;

public BaseSingleHorizontalProgressDrawable(Context context) {
public BaseSingleHorizontalProgressDrawable(@NonNull Context context) {
float density = context.getResources().getDisplayMetrics().density;
mProgressIntrinsicHeight = Math.round(PROGRESS_INTRINSIC_HEIGHT_DP * density);
mPaddedIntrinsicHeight = Math.round(PADDED_INTRINSIC_HEIGHT_DP * density);
}

@Override
@Px
public int getIntrinsicHeight() {
return mUseIntrinsicPadding ? mPaddedIntrinsicHeight : mProgressIntrinsicHeight;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import android.graphics.Canvas;
import android.graphics.Paint;

import androidx.annotation.NonNull;

class CircularProgressBackgroundDrawable extends BaseSingleCircularProgressDrawable
implements ShowBackgroundDrawable {

Expand All @@ -27,14 +29,14 @@ public void setShowBackground(boolean show) {
}

@Override
public void draw(Canvas canvas) {
public void draw(@NonNull Canvas canvas) {
if (mShow) {
super.draw(canvas);
}
}

@Override
protected void onDrawRing(Canvas canvas, Paint paint) {
protected void onDrawRing(@NonNull Canvas canvas, @NonNull Paint paint) {
drawRing(canvas, paint, 0, 360);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import android.content.Context;
import android.graphics.drawable.Drawable;

import androidx.annotation.NonNull;

/**
* A new {@code Drawable} for determinate circular {@code ProgressBar}.
*/
Expand All @@ -19,7 +21,7 @@ public class CircularProgressDrawable extends BaseProgressLayerDrawable<
*
* @param context the {@code Context} for retrieving style information.
*/
public CircularProgressDrawable(int style, Context context) {
public CircularProgressDrawable(int style, @NonNull Context context) {
super(new Drawable[] {
new CircularProgressBackgroundDrawable(),
new SingleCircularProgressDrawable(style),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@
import android.content.Context;
import android.graphics.Canvas;

import androidx.annotation.NonNull;

class HorizontalProgressBackgroundDrawable extends BaseSingleHorizontalProgressDrawable
implements ShowBackgroundDrawable {

private boolean mShow = true;

public HorizontalProgressBackgroundDrawable(Context context) {
public HorizontalProgressBackgroundDrawable(@NonNull Context context) {
super(context);
}

Expand All @@ -31,7 +33,7 @@ public void setShowBackground(boolean show) {
}

@Override
public void draw(Canvas canvas) {
public void draw(@NonNull Canvas canvas) {
if (mShow) {
super.draw(canvas);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import android.content.Context;
import android.graphics.drawable.Drawable;

import androidx.annotation.NonNull;

/**
* A backported {@code Drawable} for determinate horizontal {@code ProgressBar}.
*/
Expand All @@ -19,7 +21,7 @@ public class HorizontalProgressDrawable extends BaseProgressLayerDrawable<
*
* @param context the {@code Context} for retrieving style information.
*/
public HorizontalProgressDrawable(Context context) {
public HorizontalProgressDrawable(@NonNull Context context) {
super(new Drawable[] {
new HorizontalProgressBackgroundDrawable(context),
new SingleHorizontalProgressDrawable(context),
Expand Down
Loading

0 comments on commit 4dac4ab

Please sign in to comment.