aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <liangyuteng12345@gmail.com>2017-08-09 21:41:13 +0800
committerTrumeet <liangyuteng12345@gmail.com>2017-08-09 21:41:13 +0800
commit48ce447daa6d5c8a6d81f14c593e4cb063bc036c (patch)
tree2c1a9f689a2d3aeb42f8e530962f17db508a4b4b
parent8a2761ca1cb7b893a54a56b63b50fdb2ef0b20e3 (diff)
downloadAnimations-48ce447daa6d5c8a6d81f14c593e4cb063bc036c.tar
Animations-48ce447daa6d5c8a6d81f14c593e4cb063bc036c.tar.gz
Animations-48ce447daa6d5c8a6d81f14c593e4cb063bc036c.tar.bz2
Animations-48ce447daa6d5c8a6d81f14c593e4cb063bc036c.zip
feat: Appear and Disappear animation now support lower API0.3
-rw-r--r--app/src/main/java/top/trumeet/snippet/aospanimation/AppearAnimationActivity.java8
-rw-r--r--library/src/main/java/top/trumeet/snippet/aospanimation/library/animation/AppearAnimationUtils.java21
2 files changed, 20 insertions, 9 deletions
diff --git a/app/src/main/java/top/trumeet/snippet/aospanimation/AppearAnimationActivity.java b/app/src/main/java/top/trumeet/snippet/aospanimation/AppearAnimationActivity.java
index b110f68..f9dcca3 100644
--- a/app/src/main/java/top/trumeet/snippet/aospanimation/AppearAnimationActivity.java
+++ b/app/src/main/java/top/trumeet/snippet/aospanimation/AppearAnimationActivity.java
@@ -1,8 +1,9 @@
package top.trumeet.snippet.aospanimation;
+import android.annotation.SuppressLint;
import android.os.Bundle;
+import android.support.graphics.drawable.AnimationUtilsCompat;
import android.view.View;
-import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.TableLayout;
import android.widget.TableRow;
@@ -27,6 +28,7 @@ public class AppearAnimationActivity extends ViewAnimationActivity implements Ap
private View icon_top;
private TableLayout tableLayout;
+ @SuppressLint("RestrictedApi")
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -35,11 +37,11 @@ public class AppearAnimationActivity extends ViewAnimationActivity implements Ap
tableLayout = findViewById(R.id.table);
mAppearAnimationUtils = new AppearAnimationUtils(this,
AppearAnimationUtils.DEFAULT_APPEAR_DURATION, 2f /* translationScale */,
- 1.3f /* delayScale */, AnimationUtils.loadInterpolator(
+ 1.3f /* delayScale */, AnimationUtilsCompat.loadInterpolator(
this, R.anim.linear_out_slow_in));
mDisappearAnimationUtils = new DisappearAnimationUtils(this,
125, 4f /* translationScale */,
- 0.3f /* delayScale */, AnimationUtils.loadInterpolator(
+ 0.3f /* delayScale */, AnimationUtilsCompat.loadInterpolator(
this, R.anim.fast_out_linear_in),
new AppearAnimationUtils.RowTranslationScaler() {
@Override
diff --git a/library/src/main/java/top/trumeet/snippet/aospanimation/library/animation/AppearAnimationUtils.java b/library/src/main/java/top/trumeet/snippet/aospanimation/library/animation/AppearAnimationUtils.java
index 75237a6..65fd246 100644
--- a/library/src/main/java/top/trumeet/snippet/aospanimation/library/animation/AppearAnimationUtils.java
+++ b/library/src/main/java/top/trumeet/snippet/aospanimation/library/animation/AppearAnimationUtils.java
@@ -19,7 +19,6 @@ package top.trumeet.snippet.aospanimation.library.animation;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
-import android.annotation.TargetApi;
import android.content.Context;
import android.view.RenderNodeAnimator;
import android.view.View;
@@ -31,9 +30,8 @@ import top.trumeet.snippet.aospanimation.library.R;
/**
* A class to make nice appear transitions for views in a tabular layout.
*
- * TODO: use non-hidden apis and support pre-lollipop roms
+ * TODO: use non-hidden apis
*/
-@TargetApi(21)
public class AppearAnimationUtils implements AppearAnimationCreator<View> {
public static final long DEFAULT_APPEAR_DURATION = 220;
@@ -181,6 +179,18 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
return mStartTranslation;
}
+ /**
+ * Returns RenderNodeAnimator is support in current ROM.
+ * @return Support
+ */
+ private static boolean isSupportRenderNodeAnimator () {
+ try {
+ return Class.forName("android.view.RenderNodeAnimator") != null;
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+
@Override
public void createAnimation(final View view, long delay, long duration, float translationY,
boolean appearing, Interpolator interpolator, final Runnable endRunnable) {
@@ -189,8 +199,7 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
view.setTranslationY(appearing ? translationY : 0);
Animator alphaAnim;
float targetAlpha = appearing ? 1f : 0f;
- if (view.isHardwareAccelerated()) {
- // TODO: Use non-hidden and compat API
+ if (view.isHardwareAccelerated() && isSupportRenderNodeAnimator()) {
RenderNodeAnimator alphaAnimRt = new RenderNodeAnimator(RenderNodeAnimator.ALPHA,
targetAlpha);
alphaAnimRt.setTarget(view);
@@ -227,7 +236,7 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
public static void startTranslationYAnimation(View view, long delay, long duration,
float endTranslationY, Interpolator interpolator) {
Animator translationAnim;
- if (view.isHardwareAccelerated()) {
+ if (view.isHardwareAccelerated() && isSupportRenderNodeAnimator()) {
RenderNodeAnimator translationAnimRt = new RenderNodeAnimator(
RenderNodeAnimator.TRANSLATION_Y, endTranslationY);
translationAnimRt.setTarget(view);