summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2014-05-08 17:03:29 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-05-08 17:03:29 +0000
commit0b73f3f9b11e5e0e9b844df532bb680d5b0659c5 (patch)
treee4f1370bc7954c051422a172d6b664ef414269d2 /core
parent9b128af442c49df1eb9358b912ec4651b9968eeb (diff)
parent764af2958bccd3e4dacf4e4be18b1267f8715961 (diff)
downloadframeworks_base-0b73f3f9b11e5e0e9b844df532bb680d5b0659c5.zip
frameworks_base-0b73f3f9b11e5e0e9b844df532bb680d5b0659c5.tar.gz
frameworks_base-0b73f3f9b11e5e0e9b844df532bb680d5b0659c5.tar.bz2
am ec33d3be: Merge "Fix mismatch in Transition ID/instances"
* commit 'ec33d3bed626da72f98b00bc7f927c58072f030d': Fix mismatch in Transition ID/instances
Diffstat (limited to 'core')
-rw-r--r--core/java/android/transition/Transition.java60
1 files changed, 13 insertions, 47 deletions
diff --git a/core/java/android/transition/Transition.java b/core/java/android/transition/Transition.java
index 2549fde..49a0138 100644
--- a/core/java/android/transition/Transition.java
+++ b/core/java/android/transition/Transition.java
@@ -351,18 +351,8 @@ public abstract class Transition implements Cloneable {
}
ArrayMap<View, TransitionValues> endCopy =
new ArrayMap<View, TransitionValues>(endValues.viewValues);
- SparseArray<TransitionValues> endIdCopy =
- new SparseArray<TransitionValues>(endValues.idValues.size());
- for (int i = 0; i < endValues.idValues.size(); ++i) {
- int id = endValues.idValues.keyAt(i);
- endIdCopy.put(id, endValues.idValues.valueAt(i));
- }
- LongSparseArray<TransitionValues> endItemIdCopy =
- new LongSparseArray<TransitionValues>(endValues.itemIdValues.size());
- for (int i = 0; i < endValues.itemIdValues.size(); ++i) {
- long id = endValues.itemIdValues.keyAt(i);
- endItemIdCopy.put(id, endValues.itemIdValues.valueAt(i));
- }
+ SparseArray<TransitionValues> endIdCopy = endValues.idValues.clone();
+ LongSparseArray<TransitionValues> endItemIdCopy = endValues.itemIdValues.clone();
// Walk through the start values, playing everything we find
// Remove from the end set as we go
ArrayList<TransitionValues> startValuesList = new ArrayList<TransitionValues>();
@@ -376,21 +366,17 @@ public abstract class Transition implements Cloneable {
}
if (!isInListView) {
int id = view.getId();
- start = startValues.viewValues.get(view) != null ?
- startValues.viewValues.get(view) : startValues.idValues.get(id);
- if (endValues.viewValues.get(view) != null) {
- end = endValues.viewValues.get(view);
+ start = startValues.viewValues.get(view);
+ end = endValues.viewValues.get(view);
+ if (end != null) {
endCopy.remove(view);
} else if (id != View.NO_ID) {
- end = endValues.idValues.get(id);
- View removeView = null;
- for (View viewToRemove : endCopy.keySet()) {
- if (viewToRemove.getId() == id) {
- removeView = viewToRemove;
- }
- }
- if (removeView != null) {
- endCopy.remove(removeView);
+ end = endIdCopy.get(id);
+ if (end == null || startValues.viewValues.containsKey(end.view)) {
+ end = null;
+ id = View.NO_ID;
+ } else {
+ endCopy.remove(end.view);
}
}
endIdCopy.remove(id);
@@ -423,36 +409,16 @@ public abstract class Transition implements Cloneable {
}
}
// Now walk through the remains of the end set
+ // We've already matched everything from start to end, everything else doesn't match.
for (View view : endCopy.keySet()) {
int id = view.getId();
if (isValidTarget(view, id)) {
- TransitionValues start = startValues.viewValues.get(view) != null ?
- startValues.viewValues.get(view) : startValues.idValues.get(id);
+ TransitionValues start = null;
TransitionValues end = endCopy.get(view);
- endIdCopy.remove(id);
startValuesList.add(start);
endValuesList.add(end);
}
}
- int endIdCopySize = endIdCopy.size();
- for (int i = 0; i < endIdCopySize; ++i) {
- int id = endIdCopy.keyAt(i);
- if (isValidTarget(null, id)) {
- TransitionValues start = startValues.idValues.get(id);
- TransitionValues end = endIdCopy.get(id);
- startValuesList.add(start);
- endValuesList.add(end);
- }
- }
- int endItemIdCopySize = endItemIdCopy.size();
- for (int i = 0; i < endItemIdCopySize; ++i) {
- long id = endItemIdCopy.keyAt(i);
- // TODO: Deal with targetIDs and itemIDs
- TransitionValues start = startValues.itemIdValues.get(id);
- TransitionValues end = endItemIdCopy.get(id);
- startValuesList.add(start);
- endValuesList.add(end);
- }
ArrayMap<Animator, AnimationInfo> runningAnimators = getRunningAnimators();
long minStartDelay = Long.MAX_VALUE;
int minAnimator = mAnimators.size();