From 38f245dc0309712b4b5f2a044b7a7304215c65f4 Mon Sep 17 00:00:00 2001 From: Trumeet Date: Wed, 2 Aug 2017 17:54:39 +0800 Subject: refactor: use drawable instead of ImageView --- library/build.gradle | 2 +- .../library/FingerprintAnimationImageView.java | 79 ---------------------- .../LoopAnimatedVectorDrawableCompat.java | 65 ++++++++++++++++++ 3 files changed, 66 insertions(+), 80 deletions(-) delete mode 100644 library/src/main/java/top/trumeet/snippet/aospanimation/library/FingerprintAnimationImageView.java create mode 100644 library/src/main/java/top/trumeet/snippet/aospanimation/library/drawables/LoopAnimatedVectorDrawableCompat.java (limited to 'library') diff --git a/library/build.gradle b/library/build.gradle index b73bf02..8d8d745 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -26,7 +26,7 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'com.android.support:animated-vector-drawable:26.0.0' + compile 'com.android.support:animated-vector-drawable:26.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:0.5' androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2' diff --git a/library/src/main/java/top/trumeet/snippet/aospanimation/library/FingerprintAnimationImageView.java b/library/src/main/java/top/trumeet/snippet/aospanimation/library/FingerprintAnimationImageView.java deleted file mode 100644 index 0417e5a..0000000 --- a/library/src/main/java/top/trumeet/snippet/aospanimation/library/FingerprintAnimationImageView.java +++ /dev/null @@ -1,79 +0,0 @@ -package top.trumeet.snippet.aospanimation.library; - -import android.content.Context; -import android.content.res.ColorStateList; -import android.graphics.drawable.Drawable; -import android.support.graphics.drawable.Animatable2Compat; -import android.support.graphics.drawable.AnimatedVectorDrawableCompat; -import android.support.v4.graphics.drawable.DrawableCompat; -import android.util.AttributeSet; -import android.widget.ImageView; - -/** - * Created by Trumeet on 2017/8/2. - * @see - */ - -public class FingerprintAnimationImageView extends ImageView { - private AnimatedVectorDrawableCompat mIconAnimationDrawable; - private boolean mAnimationCancelled; - - public FingerprintAnimationImageView(Context context) { - super(context); - init(); - } - - public FingerprintAnimationImageView(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - public FingerprintAnimationImageView(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(); - } - - private void init () { - Drawable background = getResources().getDrawable(R.drawable.fp_illustration_enrollment); - DrawableCompat.setTintList(background, ColorStateList.valueOf(getResources().getColor(R.color.fingerprint_indicator_background_resting))); - setBackgroundDrawable(background); - mIconAnimationDrawable = AnimatedVectorDrawableCompat.create(getContext(), - R.drawable.enrollment_fingerprint_isolated_animation); - setImageDrawable(mIconAnimationDrawable); - mIconAnimationDrawable.registerAnimationCallback(mIconAnimationCallback); - } - - private final Animatable2Compat.AnimationCallback mIconAnimationCallback = - new Animatable2Compat.AnimationCallback() { - @Override - public void onAnimationEnd(Drawable d) { - if (mAnimationCancelled) { - return; - } - - // Start animation after it has ended. - post(new Runnable() { - @Override - public void run() { - startIconAnimation(); - } - }); - } - }; - - /** - * Start animation - */ - public void startIconAnimation() { - mAnimationCancelled = false; - mIconAnimationDrawable.start(); - } - - /** - * Stop animation, do not forgot it in onStop - */ - public void stopIconAnimation() { - mAnimationCancelled = true; - mIconAnimationDrawable.stop(); - } -} diff --git a/library/src/main/java/top/trumeet/snippet/aospanimation/library/drawables/LoopAnimatedVectorDrawableCompat.java b/library/src/main/java/top/trumeet/snippet/aospanimation/library/drawables/LoopAnimatedVectorDrawableCompat.java new file mode 100644 index 0000000..7a45cc4 --- /dev/null +++ b/library/src/main/java/top/trumeet/snippet/aospanimation/library/drawables/LoopAnimatedVectorDrawableCompat.java @@ -0,0 +1,65 @@ +package top.trumeet.snippet.aospanimation.library.drawables; + +import android.graphics.drawable.Drawable; +import android.support.graphics.drawable.Animatable2Compat; +import android.support.graphics.drawable.AnimatedVectorDrawableCompat; + +/** + * Created by Trumeet on 2017/8/2. + * Wrap android.support.graphics.drawable.AnimatedVectorDrawableCompat, + * support loop + * @see AnimatedVectorDrawableCompat + */ + +public class LoopAnimatedVectorDrawableCompat { + private AnimatedVectorDrawableCompat mAnimator; + private boolean mAnimationCancelled; + + public LoopAnimatedVectorDrawableCompat (AnimatedVectorDrawableCompat animatedVectorDrawableCompat) { + this.mAnimator = animatedVectorDrawableCompat; + setLoopEnable(true); + } + + private final Animatable2Compat.AnimationCallback mIconAnimationCallback = + new Animatable2Compat.AnimationCallback() { + @Override + public void onAnimationEnd(Drawable d) { + if (mAnimationCancelled) { + return; + } + + startAnimation(); + } + }; + + /** + * Start animation + */ + public void startAnimation() { + mAnimationCancelled = false; + mAnimator.start(); + } + + /** + * Stop animation, do not forgot it in onStop + */ + public void stopAnimation() { + mAnimationCancelled = true; + mAnimator.stop(); + } + + /** + * Enable or Disable loop + * @param enable enable loop + */ + public void setLoopEnable (boolean enable) { + if (enable) + mAnimator.registerAnimationCallback(mIconAnimationCallback); + else + mAnimator.unregisterAnimationCallback(mIconAnimationCallback); + } + + public AnimatedVectorDrawableCompat getDrawable () { + return mAnimator; + } +} -- cgit v1.2.3-70-g09d2