diff options
| author | George Mount <mount@google.com> | 2015-06-25 08:59:26 -0700 |
|---|---|---|
| committer | George Mount <mount@google.com> | 2015-06-25 14:27:06 -0700 |
| commit | e3a4cb5b3818918e6552ac52026490809b37fe6d (patch) | |
| tree | 8f5861f76cbcd4568b833a33ec355c6353124997 | |
| parent | 82e595fd6e3a9438b090106c226bb2f8bb2a6254 (diff) | |
| download | frameworks_base-e3a4cb5b3818918e6552ac52026490809b37fe6d.zip frameworks_base-e3a4cb5b3818918e6552ac52026490809b37fe6d.tar.gz frameworks_base-e3a4cb5b3818918e6552ac52026490809b37fe6d.tar.bz2 | |
Fix addTarget not limiting to the given views.
Bug 22086521
Views matched by instance, or appearing/disappearing, or
named views were not limited.
Change-Id: I70fd1497c58a3cde771f4eafe11d8ebe0889ab6c
| -rw-r--r-- | core/java/android/transition/Transition.java | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/core/java/android/transition/Transition.java b/core/java/android/transition/Transition.java index c61ca4e..4fc1441 100644 --- a/core/java/android/transition/Transition.java +++ b/core/java/android/transition/Transition.java @@ -528,11 +528,13 @@ public abstract class Transition implements Cloneable { ArrayMap<View, TransitionValues> unmatchedEnd) { for (int i = unmatchedStart.size() - 1; i >= 0; i--) { View view = unmatchedStart.keyAt(i); - TransitionValues end = unmatchedEnd.remove(view); - if (end != null) { - TransitionValues start = unmatchedStart.removeAt(i); - mStartValuesList.add(start); - mEndValuesList.add(end); + if (view != null && isValidTarget(view)) { + TransitionValues end = unmatchedEnd.remove(view); + if (end != null && end.view != null && isValidTarget(end.view)) { + TransitionValues start = unmatchedStart.removeAt(i); + mStartValuesList.add(start); + mEndValuesList.add(end); + } } } } @@ -548,9 +550,9 @@ public abstract class Transition implements Cloneable { int numStartIds = startItemIds.size(); for (int i = 0; i < numStartIds; i++) { View startView = startItemIds.valueAt(i); - if (startView != null) { + if (startView != null && isValidTarget(startView)) { View endView = endItemIds.get(startItemIds.keyAt(i)); - if (endView != null) { + if (endView != null && isValidTarget(endView)) { TransitionValues startValues = unmatchedStart.get(startView); TransitionValues endValues = unmatchedEnd.get(endView); if (startValues != null && endValues != null) { @@ -626,14 +628,20 @@ public abstract class Transition implements Cloneable { ArrayMap<View, TransitionValues> unmatchedEnd) { // Views that only exist in the start Scene for (int i = 0; i < unmatchedStart.size(); i++) { - mStartValuesList.add(unmatchedStart.valueAt(i)); - mEndValuesList.add(null); + final TransitionValues start = unmatchedStart.valueAt(i); + if (isValidTarget(start.view)) { + mStartValuesList.add(start); + mEndValuesList.add(null); + } } // Views that only exist in the end Scene for (int i = 0; i < unmatchedEnd.size(); i++) { - mEndValuesList.add(unmatchedEnd.valueAt(i)); - mStartValuesList.add(null); + final TransitionValues end = unmatchedEnd.valueAt(i); + if (isValidTarget(end.view)) { + mEndValuesList.add(end); + mStartValuesList.add(null); + } } } |
