diff --git a/README.md b/README.md index 1e479bb..fa62b55 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,12 @@ Maven: com.dsiner.lib pulllayout - 1.0.1 + 1.0.3 ``` or Gradle: ```groovy -implementation 'com.dsiner.lib:pulllayout:1.0.1' +implementation 'com.dsiner.lib:pulllayout:1.0.3' ``` ## Features diff --git a/integration/edge_ripple/src/main/java/com/d/lib/pulllayout/edge/ripple/state/Loading.java b/integration/edge_ripple/src/main/java/com/d/lib/pulllayout/edge/ripple/state/Loading.java index f133fc2..1deecde 100644 --- a/integration/edge_ripple/src/main/java/com/d/lib/pulllayout/edge/ripple/state/Loading.java +++ b/integration/edge_ripple/src/main/java/com/d/lib/pulllayout/edge/ripple/state/Loading.java @@ -33,24 +33,9 @@ public class Loading extends State { private float mFactor; private boolean mTaskRunning; - static class AnimUpdateListener implements ValueAnimator.AnimatorUpdateListener { - private final WeakReference reference; - - AnimUpdateListener(Loading view) { - this.reference = new WeakReference<>(view); - } - - @Override - public void onAnimationUpdate(ValueAnimator animation) { - Loading view = reference.get(); - if (view == null || view.mContext == null - || view.mContext instanceof Activity && ((Activity) view.mContext).isFinishing() - || view.mView == null) { - return; - } - view.mFactor = (float) animation.getAnimatedValue(); - view.mView.invalidate(); - } + public Loading(View view) { + super(view); + init(mContext); } @Override @@ -66,11 +51,6 @@ public void stop() { mTaskRunning = false; } - public Loading(View view) { - super(view); - init(mContext); - } - private void init(Context context) { mSpace = Utils.dp2px(context, 2.5f); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); @@ -106,4 +86,24 @@ public void onDraw(Canvas canvas) { mRectF.set(mRect); canvas.drawArc(mRectF, mFactor, 90, false, mPaint); } + + static class AnimUpdateListener implements ValueAnimator.AnimatorUpdateListener { + private final WeakReference reference; + + AnimUpdateListener(Loading view) { + this.reference = new WeakReference<>(view); + } + + @Override + public void onAnimationUpdate(ValueAnimator animation) { + Loading view = reference.get(); + if (view == null || view.mContext == null + || view.mContext instanceof Activity && ((Activity) view.mContext).isFinishing() + || view.mView == null) { + return; + } + view.mFactor = (float) animation.getAnimatedValue(); + view.mView.invalidate(); + } + } } diff --git a/integration/edge_ripple/src/main/java/com/d/lib/pulllayout/edge/ripple/state/Success.java b/integration/edge_ripple/src/main/java/com/d/lib/pulllayout/edge/ripple/state/Success.java index 34e8e6b..ecb731c 100644 --- a/integration/edge_ripple/src/main/java/com/d/lib/pulllayout/edge/ripple/state/Success.java +++ b/integration/edge_ripple/src/main/java/com/d/lib/pulllayout/edge/ripple/state/Success.java @@ -37,6 +37,75 @@ public class Success extends State { private Task mTask; private Handler mHandler; + public Success(View view) { + super(view); + init(mContext); + initAttr(mContext); + } + + @Override + public void reStart() { + stop(); + mTaskRunning = true; + mStep = 0; + mView.invalidate(); + mHandler.postDelayed(mTask, 700); + } + + @Override + public void stop() { + mAnimator.cancel(); + mTaskRunning = false; + mStep = 0; + mHandler.removeCallbacks(mTask); + } + + private void init(Context context) { + mTask = new Task(this); + mHandler = new Handler(); + + mPaintText = new Paint(Paint.ANTI_ALIAS_FLAG); + mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + + mAnimator = ValueAnimator.ofFloat(0f, 1f); + mAnimator.setDuration(450); + mAnimator.setInterpolator(new LinearInterpolator()); + mAnimator.addListener(new AnimListenerAdapter(this)); + mAnimator.addUpdateListener(new AnimUpdateListener(this)); + } + + protected void initAttr(Context context) { + mSign = new Done(mView); + mContent = "Refresh success"; + + mPaintText.setColor(mColorWhite); + mPaintText.setTextSize(Utils.dp2px(context, 14)); + mPaintText.setTextAlign(Paint.Align.CENTER); + mTextHeight = Utils.getTextHeight(mPaintText); + + mPaint.setColor(mColor); + } + + @Override + public void onDraw(Canvas canvas) { + super.onDraw(canvas); + if (mStep == 0) { + mSign.onDraw(canvas); + return; + } + float start = mHeight * 0.35f / 2f; + float end = (float) Math.sqrt(mHeight / 2f * mHeight / 2f + mWidth / 2f * mWidth / 2f) + 1; + canvas.drawCircle(mWidth / 2f, mHeight / 2f, start + (end - start) * mFactor, mPaint); + + canvas.drawText(mContent, mWidth / 2f, mHeight / 2 + mTextHeight / 2, mPaintText); + } + + @Override + public void setMeasuredDimension(int measuredWidth, int measuredHeight) { + super.setMeasuredDimension(measuredWidth, measuredHeight); + mSign.setMeasuredDimension(measuredWidth, measuredHeight); + } + static class AnimListenerAdapter extends AnimatorListenerAdapter { private final WeakReference reference; @@ -105,73 +174,4 @@ public void run() { view.mAnimator.start(); } } - - @Override - public void reStart() { - stop(); - mTaskRunning = true; - mStep = 0; - mView.invalidate(); - mHandler.postDelayed(mTask, 700); - } - - @Override - public void stop() { - mAnimator.cancel(); - mTaskRunning = false; - mStep = 0; - mHandler.removeCallbacks(mTask); - } - - public Success(View view) { - super(view); - init(mContext); - initAttr(mContext); - } - - private void init(Context context) { - mTask = new Task(this); - mHandler = new Handler(); - - mPaintText = new Paint(Paint.ANTI_ALIAS_FLAG); - mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - - mAnimator = ValueAnimator.ofFloat(0f, 1f); - mAnimator.setDuration(450); - mAnimator.setInterpolator(new LinearInterpolator()); - mAnimator.addListener(new AnimListenerAdapter(this)); - mAnimator.addUpdateListener(new AnimUpdateListener(this)); - } - - protected void initAttr(Context context) { - mSign = new Done(mView); - mContent = "Refresh success"; - - mPaintText.setColor(mColorWhite); - mPaintText.setTextSize(Utils.dp2px(context, 14)); - mPaintText.setTextAlign(Paint.Align.CENTER); - mTextHeight = Utils.getTextHeight(mPaintText); - - mPaint.setColor(mColor); - } - - @Override - public void onDraw(Canvas canvas) { - super.onDraw(canvas); - if (mStep == 0) { - mSign.onDraw(canvas); - return; - } - float start = mHeight * 0.35f / 2f; - float end = (float) Math.sqrt(mHeight / 2f * mHeight / 2f + mWidth / 2f * mWidth / 2f) + 1; - canvas.drawCircle(mWidth / 2f, mHeight / 2f, start + (end - start) * mFactor, mPaint); - - canvas.drawText(mContent, mWidth / 2f, mHeight / 2 + mTextHeight / 2, mPaintText); - } - - @Override - public void setMeasuredDimension(int measuredWidth, int measuredHeight) { - super.setMeasuredDimension(measuredWidth, measuredHeight); - mSign.setMeasuredDimension(measuredWidth, measuredHeight); - } }