summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2015-06-25 08:59:26 -0700
committerGeorge Mount <mount@google.com>2015-06-25 14:27:06 -0700
commite3a4cb5b3818918e6552ac52026490809b37fe6d (patch)
tree8f5861f76cbcd4568b833a33ec355c6353124997 /core/java
parent82e595fd6e3a9438b090106c226bb2f8bb2a6254 (diff)
downloadframeworks_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
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/transition/Transition.java30
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);
+ }
}
}