aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <liangyuteng12345@gmail.com>2017-08-02 17:54:39 +0800
committerTrumeet <liangyuteng12345@gmail.com>2017-08-02 17:54:39 +0800
commit38f245dc0309712b4b5f2a044b7a7304215c65f4 (patch)
treed3cc5b44126406da20f0903c91d9e7ec03e57f1e
parentad9fdbdfcc37220779d64c3ac7547ec3ceff6958 (diff)
downloadAnimations-38f245dc0309712b4b5f2a044b7a7304215c65f4.tar
Animations-38f245dc0309712b4b5f2a044b7a7304215c65f4.tar.gz
Animations-38f245dc0309712b4b5f2a044b7a7304215c65f4.tar.bz2
Animations-38f245dc0309712b4b5f2a044b7a7304215c65f4.zip
refactor: use drawable instead of ImageView
-rw-r--r--.idea/misc.xml2
-rw-r--r--README.md26
-rw-r--r--app/src/main/java/top/trumeet/snippet/aospanimation/MainActivity.java19
-rw-r--r--app/src/main/res/layout/activity_main.xml6
-rw-r--r--library/build.gradle2
-rw-r--r--library/src/main/java/top/trumeet/snippet/aospanimation/library/FingerprintAnimationImageView.java79
-rw-r--r--library/src/main/java/top/trumeet/snippet/aospanimation/library/drawables/LoopAnimatedVectorDrawableCompat.java65
7 files changed, 99 insertions, 100 deletions
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 17c28e9..4aef399 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -24,7 +24,7 @@
</value>
</option>
</component>
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8 (3)" project-jdk-type="JavaSDK">
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" project-jdk-name="1.8 (3)" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
diff --git a/README.md b/README.md
index 7538feb..5c95772 100644
--- a/README.md
+++ b/README.md
@@ -31,24 +31,30 @@ Beautiful animations and views from AOSP
# Usage
-* FingerprintAnimationImageView
+## Fingerprint isolated animation
-  帶有指紋識別動畫的ImageView。
+ **設置 -> 安全性 -> 指紋 -> 新增指紋** 中間的指紋圖標動畫
-  **設置 -> 安全性 -> 指紋 -> 新增指紋**
+ 來自 [platform_packages_apps_settings/FingerprintEnrollEnrolling.java](https://github.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java)
- ![FingerprintAnimationImageView](https://raw.githubusercontent.com/AndroidSnippet/Animations/master/art/FingerprintAnimationImageView_0.PNG)
+ ![animation](https://raw.githubusercontent.com/AndroidSnippet/Animations/master/art/FingerprintAnimationImageView_0.PNG)
- ```xml
- <top.trumeet.snippet.aospanimation.library.FingerprintAnimationImageView
+ ```xml
+ <ImageView
android:id="@+id/fingerprint_animator"
android:layout_width="@dimen/fingerprint_animation_size"
- android:layout_height="@dimen/fingerprint_animation_size" />
- ```
+ android:layout_height="@dimen/fingerprint_animation_size"
+ android:background="@drawable/fp_illustration_enrollment"
+ android:backgroundTint="@color/fingerprint_indicator_background_resting" />
+ ```
- 開始動畫: `startIconAnimation()`
+ LoopAnimatedVectorDrawableCompat mFingerprintAnimator = new LoopAnimatedVectorDrawableCompat(AnimatedVectorDrawableCompat.create(this,
+ R.drawable.enrollment_fingerprint_isolated_animation));
+ fingerprintIsolated.setImageDrawable(mFingerprintAnimator.getDrawable());
- 停止動畫: `stopIconAnimation()`
+ 開始動畫: `mFingerprintAnimator.startIconAnimation()`
+
+ 停止動畫: `mFingerprintAnimator.stopIconAnimation()`
# Licenses
使用本項目請確保您遵守 `Apache License 2.0`
diff --git a/app/src/main/java/top/trumeet/snippet/aospanimation/MainActivity.java b/app/src/main/java/top/trumeet/snippet/aospanimation/MainActivity.java
index 341fda7..661b2da 100644
--- a/app/src/main/java/top/trumeet/snippet/aospanimation/MainActivity.java
+++ b/app/src/main/java/top/trumeet/snippet/aospanimation/MainActivity.java
@@ -2,10 +2,12 @@ package top.trumeet.snippet.aospanimation;
import android.app.Activity;
import android.os.Bundle;
+import android.support.graphics.drawable.AnimatedVectorDrawableCompat;
import android.view.Menu;
import android.view.MenuItem;
+import android.widget.ImageView;
-import top.trumeet.snippet.aospanimation.library.FingerprintAnimationImageView;
+import top.trumeet.snippet.aospanimation.library.drawables.LoopAnimatedVectorDrawableCompat;
/**
* Created by Trumeet on 2017/8/2.
@@ -13,23 +15,26 @@ import top.trumeet.snippet.aospanimation.library.FingerprintAnimationImageView;
*/
public class MainActivity extends Activity {
- private FingerprintAnimationImageView mFingerprintAnimator;
+ private LoopAnimatedVectorDrawableCompat mFingerprintAnimator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- mFingerprintAnimator = findViewById(R.id.fingerprint_animator);
+ ImageView fingerprintIsolated = findViewById(R.id.fingerprint_animator);
+ mFingerprintAnimator = new LoopAnimatedVectorDrawableCompat(AnimatedVectorDrawableCompat.create(this,
+ R.drawable.enrollment_fingerprint_isolated_animation));
+ fingerprintIsolated.setImageDrawable(mFingerprintAnimator.getDrawable());
}
@Override
public void onStart () {
super.onStart();
- mFingerprintAnimator.startIconAnimation();
+ mFingerprintAnimator.startAnimation();
}
@Override
public void onStop () {
- mFingerprintAnimator.stopIconAnimation();
+ mFingerprintAnimator.stopAnimation();
super.onStop();
}
@@ -46,10 +51,10 @@ public class MainActivity extends Activity {
public boolean onOptionsItemSelected (MenuItem item) {
switch (item.getItemId()) {
case 0 :
- mFingerprintAnimator.startIconAnimation();
+ mFingerprintAnimator.startAnimation();
return true;
case 1 :
- mFingerprintAnimator.stopIconAnimation();
+ mFingerprintAnimator.stopAnimation();
return true;
}
return false;
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 5b8e920..1cf0dc6 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -7,9 +7,11 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
- <top.trumeet.snippet.aospanimation.library.FingerprintAnimationImageView
+ <ImageView
android:id="@+id/fingerprint_animator"
android:layout_width="@dimen/fingerprint_animation_size"
- android:layout_height="@dimen/fingerprint_animation_size" />
+ android:layout_height="@dimen/fingerprint_animation_size"
+ android:background="@drawable/fp_illustration_enrollment"
+ android:backgroundTint="@color/fingerprint_indicator_background_resting" />
</LinearLayout>
</ScrollView> \ No newline at end of file
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 <a href="https://github.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java" />
- */
-
-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;
+ }
+}