summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2014-07-18 16:22:09 -0700
committerJohn Reck <jreck@google.com>2014-07-19 02:00:15 +0000
commitc01bd1167a1b08d59557f214ddc48cf24d3b8d0a (patch)
tree6b1b2e5dea2cdd0027a17cfdcccf9f781f1c52cc
parent6eed108eeb66d123c47e7066d23738ca8dd8bdd4 (diff)
downloadframeworks_base-c01bd1167a1b08d59557f214ddc48cf24d3b8d0a.zip
frameworks_base-c01bd1167a1b08d59557f214ddc48cf24d3b8d0a.tar.gz
frameworks_base-c01bd1167a1b08d59557f214ddc48cf24d3b8d0a.tar.bz2
Return Animator instead of ValueAnimator
Change-Id: I29a7cfdc7ffbb3a4d33f9e64f9d7ca791f5c947c
-rw-r--r--api/current.txt2
-rw-r--r--core/java/android/animation/Animator.java35
-rw-r--r--core/java/android/animation/RevealAnimator.java31
-rw-r--r--core/java/android/animation/ValueAnimator.java1
-rw-r--r--core/java/android/view/View.java18
-rw-r--r--core/java/android/view/ViewAnimationUtils.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/CircularClipper.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java2
-rw-r--r--tests/HwAccelerationTest/src/com/android/test/hwui/RevealActivity.java4
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);