diff options
author | Trumeet <liangyuteng12345@gmail.com> | 2017-08-09 21:41:13 +0800 |
---|---|---|
committer | Trumeet <liangyuteng12345@gmail.com> | 2017-08-09 21:41:13 +0800 |
commit | 48ce447daa6d5c8a6d81f14c593e4cb063bc036c (patch) | |
tree | 2c1a9f689a2d3aeb42f8e530962f17db508a4b4b | |
parent | 8a2761ca1cb7b893a54a56b63b50fdb2ef0b20e3 (diff) | |
download | Animations-48ce447daa6d5c8a6d81f14c593e4cb063bc036c.tar Animations-48ce447daa6d5c8a6d81f14c593e4cb063bc036c.tar.gz Animations-48ce447daa6d5c8a6d81f14c593e4cb063bc036c.tar.bz2 Animations-48ce447daa6d5c8a6d81f14c593e4cb063bc036c.zip |
feat: Appear and Disappear animation now support lower API0.3
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); |