Merge "Work around a bug in an An app"
diff --git a/core/java/android/animation/AnimatorSet.java b/core/java/android/animation/AnimatorSet.java
index bca736a25..d508544 100644
--- a/core/java/android/animation/AnimatorSet.java
+++ b/core/java/android/animation/AnimatorSet.java
@@ -174,6 +174,10 @@
*/
private long mPauseTime = -1;
+ // This is to work around a bug in b/34736819. This needs to be removed once play team
+ // fixes their side.
+ private AnimatorListenerAdapter mDummyListener = new AnimatorListenerAdapter() {};
+
public AnimatorSet() {
super();
mNodeMap.put(mDelayAnim, mRootNode);
@@ -1018,6 +1022,8 @@
}
private void startAnimation() {
+ addDummyListener();
+
// Register animation callback
addAnimationCallback(mStartDelay);
@@ -1062,6 +1068,20 @@
}
}
+ // This is to work around the issue in b/34736819, as the old behavior in AnimatorSet had
+ // masked a real bug in play movies. TODO: remove this and below once the root cause is fixed.
+ private void addDummyListener() {
+ for (int i = 1; i < mNodes.size(); i++) {
+ mNodes.get(i).mAnimation.addListener(mDummyListener);
+ }
+ }
+
+ private void removeDummyListener() {
+ for (int i = 1; i < mNodes.size(); i++) {
+ mNodes.get(i).mAnimation.removeListener(mDummyListener);
+ }
+ }
+
private int findLatestEventIdForTime(long currentPlayTime) {
int size = mEvents.size();
int latestId = mLastEventId;
@@ -1107,6 +1127,7 @@
tmpListeners.get(i).onAnimationEnd(this, mReversing);
}
}
+ removeDummyListener();
mSelfPulse = true;
mReversing = false;
}