summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2014-10-21 18:29:02 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-10-21 18:29:02 +0000
commit2c861c782d84c61687c969605c28d543a1754e63 (patch)
tree948bcbf7e1cb859525d19b5821dc315ec13a30cf /graphics
parent1bb42f06e219c3073fb0612892eabdb6b9eadbc4 (diff)
parent0a8a3eab8bfc3390e1225dfade40599279b4921b (diff)
downloadframeworks_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.java30
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) {