diff options
author | John Reck <jreck@google.com> | 2014-07-18 16:22:09 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2014-07-19 02:00:15 +0000 |
commit | c01bd1167a1b08d59557f214ddc48cf24d3b8d0a (patch) | |
tree | 6b1b2e5dea2cdd0027a17cfdcccf9f781f1c52cc | |
parent | 6eed108eeb66d123c47e7066d23738ca8dd8bdd4 (diff) | |
download | frameworks_base-c01bd1167a1b08d59557f214ddc48cf24d3b8d0a.zip frameworks_base-c01bd1167a1b08d59557f214ddc48cf24d3b8d0a.tar.gz frameworks_base-c01bd1167a1b08d59557f214ddc48cf24d3b8d0a.tar.bz2 |
Return Animator instead of ValueAnimator
Change-Id: I29a7cfdc7ffbb3a4d33f9e64f9d7ca791f5c947c
9 files changed, 44 insertions, 56 deletions
diff --git a/api/current.txt b/api/current.txt index fdf9b84..7777db8 100644 --- a/api/current.txt +++ b/api/current.txt @@ -34414,7 +34414,7 @@ package android.view { } public final class ViewAnimationUtils { - method public static final android.animation.ValueAnimator createCircularReveal(android.view.View, int, int, float, float); + method public static final android.animation.Animator createCircularReveal(android.view.View, int, int, float, float); } public class ViewConfiguration { diff --git a/core/java/android/animation/Animator.java b/core/java/android/animation/Animator.java index 95f83ac..5f80ed7 100644 --- a/core/java/android/animation/Animator.java +++ b/core/java/android/animation/Animator.java @@ -433,4 +433,39 @@ public abstract class Animator implements Cloneable { */ void onAnimationResume(Animator animation); } + + /** + * <p>Whether or not the Animator is allowed to run asynchronously off of + * the UI thread. This is a hint that informs the Animator that it is + * OK to run the animation off-thread, however the Animator may decide + * that it must run the animation on the UI thread anyway. + * + * <p>Regardless of whether or not the animation runs asynchronously, all + * listener callbacks will be called on the UI thread.</p> + * + * <p>To be able to use this hint the following must be true:</p> + * <ol> + * <li>The animator is immutable while {@link #isStarted()} is true. Requests + * to change duration, delay, etc... may be ignored.</li> + * <li>Lifecycle callback events may be asynchronous. Events such as + * {@link Animator.AnimatorListener#onAnimationEnd(Animator)} or + * {@link Animator.AnimatorListener#onAnimationRepeat(Animator)} may end up delayed + * as they must be posted back to the UI thread, and any actions performed + * by those callbacks (such as starting new animations) will not happen + * in the same frame.</li> + * <li>State change requests ({@link #cancel()}, {@link #end()}, {@link #reverse()}, etc...) + * may be asynchronous. It is guaranteed that all state changes that are + * performed on the UI thread in the same frame will be applied as a single + * atomic update, however that frame may be the current frame, + * the next frame, or some future frame. This will also impact the observed + * state of the Animator. For example, {@link #isStarted()} may still return true + * after a call to {@link #end()}. Using the lifecycle callbacks is preferred over + * queries to {@link #isStarted()}, {@link #isRunning()}, and {@link #isPaused()} + * for this reason.</li> + * </ol> + * @hide + */ + public void setAllowRunningAsynchronously(boolean mayRunAsync) { + // It is up to subclasses to support this, if they can. + } } diff --git a/core/java/android/animation/RevealAnimator.java b/core/java/android/animation/RevealAnimator.java index a1cbd45..53d92e6 100644 --- a/core/java/android/animation/RevealAnimator.java +++ b/core/java/android/animation/RevealAnimator.java @@ -167,38 +167,9 @@ public class RevealAnimator extends ValueAnimator { } @Override - public ValueAnimator clone() { + public RevealAnimator clone() { RevealAnimator anim = (RevealAnimator) super.clone(); anim.mRtAnimator = null; return anim; } - - // ---------------------------------------- - // All the things we don't allow - // ---------------------------------------- - - @Override - public void setValues(PropertyValuesHolder... values) { - throw new IllegalStateException("Cannot change the values of RevealAnimator"); - } - - @Override - public void setFloatValues(float... values) { - throw new IllegalStateException("Cannot change the values of RevealAnimator"); - } - - @Override - public void setIntValues(int... values) { - throw new IllegalStateException("Cannot change the values of RevealAnimator"); - } - - @Override - public void setObjectValues(Object... values) { - throw new IllegalStateException("Cannot change the values of RevealAnimator"); - } - - @Override - public void setEvaluator(TypeEvaluator value) { - throw new IllegalStateException("Cannot change the evaluator of RevealAnimator"); - } } diff --git a/core/java/android/animation/ValueAnimator.java b/core/java/android/animation/ValueAnimator.java index b13838a..9435dfb 100644 --- a/core/java/android/animation/ValueAnimator.java +++ b/core/java/android/animation/ValueAnimator.java @@ -1409,6 +1409,7 @@ public class ValueAnimator extends Animator { * </ol> * @hide */ + @Override public void setAllowRunningAsynchronously(boolean mayRunAsync) { // It is up to subclasses to support this, if they can. } diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index a5899de..e138345 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -10711,24 +10711,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } /** - * Returns a ValueAnimator which can animate a clearing circle. - * <p> - * The View is prevented from drawing within the circle, so the content - * behind the View shows through. - * - * @param centerX The x coordinate of the center of the animating circle. - * @param centerY The y coordinate of the center of the animating circle. - * @param startRadius The starting radius of the animating circle. - * @param endRadius The ending radius of the animating circle. - * - * @hide - */ - public final ValueAnimator createClearCircleAnimator(int centerX, int centerY, - float startRadius, float endRadius) { - return new RevealAnimator(this, centerX, centerY, startRadius, endRadius, true); - } - - /** * Returns the current StateListAnimator if exists. * * @return StateListAnimator or null if it does not exists diff --git a/core/java/android/view/ViewAnimationUtils.java b/core/java/android/view/ViewAnimationUtils.java index bee35ae..0a53b91 100644 --- a/core/java/android/view/ViewAnimationUtils.java +++ b/core/java/android/view/ViewAnimationUtils.java @@ -16,8 +16,8 @@ package android.view; +import android.animation.Animator; import android.animation.RevealAnimator; -import android.animation.ValueAnimator; /** * Defines common utilities for working with View's animations. @@ -36,7 +36,7 @@ public final class ViewAnimationUtils { * @param startRadius The starting radius of the animating circle. * @param endRadius The ending radius of the animating circle. */ - public static final ValueAnimator createCircularReveal(View view, + public static final Animator createCircularReveal(View view, int centerX, int centerY, float startRadius, float endRadius) { return new RevealAnimator(view, centerX, centerY, startRadius, endRadius, false); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/CircularClipper.java b/packages/SystemUI/src/com/android/systemui/qs/CircularClipper.java index 327ed6a..90275c1 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/CircularClipper.java +++ b/packages/SystemUI/src/com/android/systemui/qs/CircularClipper.java @@ -19,7 +19,6 @@ package com.android.systemui.qs; import android.animation.Animator; import android.animation.Animator.AnimatorListener; import android.animation.AnimatorListenerAdapter; -import android.animation.ValueAnimator; import android.view.View; import android.view.ViewAnimationUtils; @@ -28,7 +27,7 @@ public class CircularClipper { private final View mTarget; - private ValueAnimator mAnimator; + private Animator mAnimator; public CircularClipper(View target) { mTarget = target; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java index c02a598..944a407 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java @@ -244,7 +244,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView int widthHalf = mBackgroundNormal.getWidth()/2; int heightHalf = mBackgroundNormal.getActualHeight()/2; float radius = (float) Math.sqrt(widthHalf*widthHalf + heightHalf*heightHalf); - ValueAnimator animator = + Animator animator = ViewAnimationUtils.createCircularReveal(mBackgroundNormal, widthHalf, heightHalf, 0, radius); mBackgroundNormal.setVisibility(View.VISIBLE); diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/RevealActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/RevealActivity.java index d27be69..3360e30 100644 --- a/tests/HwAccelerationTest/src/com/android/test/hwui/RevealActivity.java +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/RevealActivity.java @@ -16,7 +16,7 @@ package com.android.test.hwui; -import android.animation.ValueAnimator; +import android.animation.Animator; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; @@ -54,7 +54,7 @@ public class RevealActivity extends Activity implements OnClickListener { @Override public void onClick(View view) { - ValueAnimator animator = ViewAnimationUtils.createCircularReveal(view, + Animator animator = ViewAnimationUtils.createCircularReveal(view, view.getWidth() / 2, view.getHeight() / 2, 0, Math.max(view.getWidth(), view.getHeight())); animator.setDuration(DURATION); |