diff options
author | Alan Viverette <alanv@google.com> | 2014-10-21 18:29:02 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-10-21 18:29:02 +0000 |
commit | 2c861c782d84c61687c969605c28d543a1754e63 (patch) | |
tree | 948bcbf7e1cb859525d19b5821dc315ec13a30cf /graphics | |
parent | 1bb42f06e219c3073fb0612892eabdb6b9eadbc4 (diff) | |
parent | 0a8a3eab8bfc3390e1225dfade40599279b4921b (diff) | |
download | frameworks_base-2c861c782d84c61687c969605c28d543a1754e63.zip frameworks_base-2c861c782d84c61687c969605c28d543a1754e63.tar.gz frameworks_base-2c861c782d84c61687c969605c28d543a1754e63.tar.bz2 |
am 0a8a3eab: am 46b4920a: Merge "Propagate state changes even when we don\'t change drawable index" into lmp-mr1-dev
* commit '0a8a3eab8bfc3390e1225dfade40599279b4921b':
Propagate state changes even when we don't change drawable index
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java b/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java index 9bcad3e..849faec 100644 --- a/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java +++ b/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java @@ -139,27 +139,15 @@ public class AnimatedStateListDrawable extends StateListDrawable { @Override protected boolean onStateChange(int[] stateSet) { - final int keyframeIndex = mState.indexOfKeyframe(stateSet); - if (keyframeIndex == getCurrentIndex()) { - // Propagate state change to current keyframe. - final Drawable current = getCurrent(); - if (current != null) { - return current.setState(stateSet); - } - return false; - } - - // Attempt to find a valid transition to the keyframe. - if (selectTransition(keyframeIndex)) { - return true; - } - - // No valid transition, attempt to jump directly to the keyframe. - if (selectDrawable(keyframeIndex)) { - return true; - } - - return super.onStateChange(stateSet); + // If we're not already at the target index, either attempt to find a + // valid transition to it or jump directly there. + final int targetIndex = mState.indexOfKeyframe(stateSet); + final boolean changedIndex = targetIndex != getCurrentIndex() + && (selectTransition(targetIndex) || selectDrawable(targetIndex)); + + // Always call super.onStateChanged() to propagate the state change to + // the current drawable. + return super.onStateChange(stateSet) || changedIndex; } private boolean selectTransition(int toIndex) { |