From e9140a72b1059574046a624b471b2c3a35806496 Mon Sep 17 00:00:00 2001 From: Chet Haase Date: Wed, 16 Feb 2011 16:23:29 -0800 Subject: Fix invalidation bug with View bounds properties When setLeft/Right/Top/Bottom() functions were called on View, invalidation was only happening at the parent level. When an app is hardware accelerated, this means that the view's display list is not being recreated. So views that were changing size due to these calls were not getting redrawn properly, causing some artifacts in animations (especially LayoutTransition, which calls these setters). Fix is to invalidate the child instead of just the child's bounds in the parent. Change-Id: Ic8b2a5db519345dce617f914c2214738f22031b2 --- core/java/android/animation/KeyframeSet.java | 9 +++++++++ core/java/android/animation/ObjectAnimator.java | 12 ++++++++++++ core/java/android/animation/PropertyValuesHolder.java | 5 +++++ core/java/android/animation/ValueAnimator.java | 11 +++++++++++ 4 files changed, 37 insertions(+) (limited to 'core/java/android/animation') diff --git a/core/java/android/animation/KeyframeSet.java b/core/java/android/animation/KeyframeSet.java index fa61b71..6172aab 100644 --- a/core/java/android/animation/KeyframeSet.java +++ b/core/java/android/animation/KeyframeSet.java @@ -212,4 +212,13 @@ class KeyframeSet { // shouldn't reach here return mLastKeyframe.getValue(); } + + @Override + public String toString() { + String returnVal = " "; + for (int i = 0; i < mNumKeyframes; ++i) { + returnVal += mKeyframes.get(i).getValue() + " "; + } + return returnVal; + } } diff --git a/core/java/android/animation/ObjectAnimator.java b/core/java/android/animation/ObjectAnimator.java index d038cd6..b8a7cb2 100644 --- a/core/java/android/animation/ObjectAnimator.java +++ b/core/java/android/animation/ObjectAnimator.java @@ -394,4 +394,16 @@ public final class ObjectAnimator extends ValueAnimator { final ObjectAnimator anim = (ObjectAnimator) super.clone(); return anim; } + + @Override + public String toString() { + String returnVal = "ObjectAnimator@" + Integer.toHexString(hashCode()) + ", target " + + mTarget; + if (mValues != null) { + for (int i = 0; i < mValues.length; ++i) { + returnVal += "\n " + mValues[i].toString(); + } + } + return returnVal; + } } diff --git a/core/java/android/animation/PropertyValuesHolder.java b/core/java/android/animation/PropertyValuesHolder.java index 0c30aad..6f91fc0 100644 --- a/core/java/android/animation/PropertyValuesHolder.java +++ b/core/java/android/animation/PropertyValuesHolder.java @@ -578,6 +578,11 @@ public class PropertyValuesHolder implements Cloneable { return mAnimatedValue; } + @Override + public String toString() { + return mPropertyName + ": " + mKeyframeSet.toString(); + } + /** * Utility method to derive a setter/getter method name from a property name, where the * prefix is typically "set" or "get" and the first letter of the property name is diff --git a/core/java/android/animation/ValueAnimator.java b/core/java/android/animation/ValueAnimator.java index 5a8a74a..2e44d6d 100755 --- a/core/java/android/animation/ValueAnimator.java +++ b/core/java/android/animation/ValueAnimator.java @@ -1207,4 +1207,15 @@ public class ValueAnimator extends Animator { sPendingAnimations.get().clear(); sDelayedAnims.get().clear(); } + + @Override + public String toString() { + String returnVal = "ValueAnimator@" + Integer.toHexString(hashCode()); + if (mValues != null) { + for (int i = 0; i < mValues.length; ++i) { + returnVal += "\n " + mValues[i].toString(); + } + } + return returnVal; + } } -- cgit v1.1