From 2fae84958f2619aaafe483ce4a55cc9b5bbfb402 Mon Sep 17 00:00:00 2001 From: seven332 Date: Mon, 8 Jun 2015 23:43:34 +0800 Subject: [PATCH] Remove RenderNodeAnimator --- .../java/com/hippo/effect/ViewTransition.java | 56 +---------------- .../java/com/hippo/util/AnimationUtils.java | 22 ------- .../java/com/hippo/widget/CheckTextView.java | 61 ++----------------- 3 files changed, 6 insertions(+), 133 deletions(-) diff --git a/app/src/main/java/com/hippo/effect/ViewTransition.java b/app/src/main/java/com/hippo/effect/ViewTransition.java index bb2a28994..f4cbd2afc 100644 --- a/app/src/main/java/com/hippo/effect/ViewTransition.java +++ b/app/src/main/java/com/hippo/effect/ViewTransition.java @@ -18,11 +18,9 @@ package com.hippo.effect; import android.animation.Animator; import android.animation.ObjectAnimator; -import android.view.RenderNodeAnimator; import android.view.View; import com.hippo.animation.SimpleAnimatorListener; -import com.hippo.util.AnimationUtils; import com.hippo.util.ViewUtils; public class ViewTransition { @@ -86,13 +84,7 @@ public class ViewTransition { ViewUtils.setVisibility(v, View.GONE); } } - View viewToHide = views[oldShownView]; - View viewToShow = views[shownView]; - if (AnimationUtils.isSupportRenderNodeAnimator(viewToHide, viewToShow)) { - startAnimationsL(viewToHide, viewToShow); - } else { - startAnimations(views[oldShownView], views[shownView]); - } + startAnimations(views[oldShownView], views[shownView]); } else { for (int i = 0; i < length; i++) { View v = views[i]; @@ -112,52 +104,6 @@ public class ViewTransition { } } - private void startAnimationsL(final View hiddenView, View shownView) { - RenderNodeAnimator rna1 = new RenderNodeAnimator(RenderNodeAnimator.ALPHA, 0f); - rna1.setTarget(hiddenView); - rna1.setDuration(ANIMATE_TIME); - rna1.addListener(new SimpleAnimatorListener() { - @Override - public void onAnimationCancel(Animator animation) { - super.onAnimationCancel(animation); - mAnimator1 = null; - } - - @Override - public void onAnimationEnd(Animator animation, boolean canceled) { - super.onAnimationEnd(animation, canceled); - if (!canceled) { - ViewUtils.setVisibility(hiddenView, View.GONE); - mAnimator1 = null; - } - } - }); - rna1.start(); - mAnimator1 = rna1; - - ViewUtils.setVisibility(shownView, View.VISIBLE); - RenderNodeAnimator rna2 = new RenderNodeAnimator(RenderNodeAnimator.ALPHA, 1f); - rna2.setTarget(shownView); - rna2.setDuration(ANIMATE_TIME); - rna2.addListener(new SimpleAnimatorListener() { - @Override - public void onAnimationCancel(Animator animation) { - super.onAnimationCancel(animation); - mAnimator2 = null; - } - - @Override - public void onAnimationEnd(Animator animation, boolean canceled) { - super.onAnimationEnd(animation, canceled); - if (!canceled) { - mAnimator2 = null; - } - } - }); - rna2.start(); - mAnimator2 = rna2; - } - private void startAnimations(final View hiddenView, final View shownView) { ObjectAnimator oa1 = ObjectAnimator.ofFloat(hiddenView, "alpha", 0f); oa1.setDuration(ANIMATE_TIME); diff --git a/app/src/main/java/com/hippo/util/AnimationUtils.java b/app/src/main/java/com/hippo/util/AnimationUtils.java index 2eeddc4cf..a68e29d94 100644 --- a/app/src/main/java/com/hippo/util/AnimationUtils.java +++ b/app/src/main/java/com/hippo/util/AnimationUtils.java @@ -16,13 +16,9 @@ package com.hippo.util; -import android.annotation.TargetApi; -import android.graphics.Canvas; -import android.os.Build; import android.support.v4.view.animation.FastOutLinearInInterpolator; import android.support.v4.view.animation.FastOutSlowInInterpolator; import android.support.v4.view.animation.LinearOutSlowInInterpolator; -import android.view.View; import android.view.animation.Interpolator; public final class AnimationUtils { @@ -30,22 +26,4 @@ public final class AnimationUtils { public static final Interpolator FAST_SLOW_INTERPOLATOR = new LinearOutSlowInInterpolator(); public static final Interpolator SLOW_FAST_INTERPOLATOR = new FastOutLinearInInterpolator(); public static final Interpolator SLOW_FAST_SLOW_INTERPOLATOR = new FastOutSlowInInterpolator(); - - @TargetApi(Build.VERSION_CODES.KITKAT) - public static boolean isSupportRenderNodeAnimator(View... views) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - return false; - } - for (View v : views) { - if (!v.isAttachedToWindow()) { - return false; - } - } - return true; - } - - public static boolean isSupportRenderNodeAnimator(Canvas canvas) { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && - canvas.isHardwareAccelerated(); - } } diff --git a/app/src/main/java/com/hippo/widget/CheckTextView.java b/app/src/main/java/com/hippo/widget/CheckTextView.java index e5089482a..f90e40faf 100644 --- a/app/src/main/java/com/hippo/widget/CheckTextView.java +++ b/app/src/main/java/com/hippo/widget/CheckTextView.java @@ -20,15 +20,12 @@ import android.animation.Animator; import android.animation.ObjectAnimator; import android.content.Context; import android.graphics.Canvas; -import android.graphics.CanvasProperty; import android.graphics.Paint; import android.os.Build; import android.os.Bundle; import android.os.Parcelable; import android.support.annotation.NonNull; import android.util.AttributeSet; -import android.view.HardwareCanvas; -import android.view.RenderNodeAnimator; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Interpolator; @@ -51,11 +48,6 @@ public class CheckTextView extends TextView implements OnClickListener, Hotspota private boolean mChecked = false; private boolean mPrepareAnimator = false; - private CanvasProperty mPropPaint; - private CanvasProperty mPropRadius; - private CanvasProperty mPropX; - private CanvasProperty mPropY; - private Paint mPaint; private float mRadius = 0f; private float mX; @@ -100,6 +92,8 @@ public class CheckTextView extends TextView implements OnClickListener, Hotspota @Override public void drawableHotspotChanged(float x, float y) { + super.drawableHotspotChanged(x, y); + mX = x; mY = y; mMaxRadius = MathUtils.coverageRadius(getWidth(), getHeight(), x, y); @@ -135,34 +129,7 @@ public class CheckTextView extends TextView implements OnClickListener, Hotspota mPrepareAnimator = true; } - private void createHardwareAnimations(Canvas canvas) { - float startRadius; - float endRadius; - Interpolator interpolator; - if (mChecked) { - startRadius = 0; - endRadius = mMaxRadius; - interpolator = AnimationUtils.FAST_SLOW_INTERPOLATOR; - } else { - startRadius = mMaxRadius; - endRadius = 0; - interpolator = AnimationUtils.SLOW_FAST_INTERPOLATOR; - } - mPropPaint = CanvasProperty.createPaint(mPaint); - mPropRadius = CanvasProperty.createFloat(startRadius); - mPropX = CanvasProperty.createFloat(mX); - mPropY = CanvasProperty.createFloat(mY); - - final RenderNodeAnimator radiusAnim = new RenderNodeAnimator(mPropRadius, endRadius); - radiusAnim.setDuration(ANIMATION_DURATION); - radiusAnim.setInterpolator(interpolator); - radiusAnim.addListener(mAnimatorListener); - radiusAnim.setTarget(canvas); - radiusAnim.start(); - mAnimator = radiusAnim; - } - - private void createSoftwareAnimations() { + private void createAnimations() { float startRadius; float endRadius; Interpolator interpolator; @@ -200,24 +167,14 @@ public class CheckTextView extends TextView implements OnClickListener, Hotspota protected void onDraw(@NonNull Canvas canvas) { super.onDraw(canvas); - boolean useHardware = AnimationUtils.isSupportRenderNodeAnimator(canvas); - if (mPrepareAnimator) { mPrepareAnimator = false; cancelAnimations(); - if (useHardware) { - createHardwareAnimations(canvas); - } else { - createSoftwareAnimations(); - } + createAnimations(); } if (mAnimator != null) { - if (useHardware) { - drawHardware((HardwareCanvas) canvas); - } else { - drawSoftware(canvas); - } + canvas.drawCircle(mX, mY, mRadius, mPaint); } else { if (mChecked) { canvas.drawColor(mMaskColor); @@ -225,14 +182,6 @@ public class CheckTextView extends TextView implements OnClickListener, Hotspota } } - private void drawHardware(HardwareCanvas c) { - c.drawCircle(mPropX, mPropY, mPropRadius, mPropPaint); - } - - private void drawSoftware(Canvas c) { - c.drawCircle(mX, mY, mRadius, mPaint); - } - public void setChecked(boolean checked) { setChecked(checked, true); }