Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c0ceb34 authored by George Mount's avatar George Mount
Browse files

Properly filter out excluded views in createAnimators() call.

Bug 14258783

Change-Id: I2d07e9d72a87674c215d36ccfc004c45623e7c24
parent f60194b1
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -256,11 +256,45 @@ public class TransitionSet extends Transition {
    @Override
    protected void createAnimators(ViewGroup sceneRoot, TransitionValuesMaps startValues,
            TransitionValuesMaps endValues) {
        startValues = removeExcludes(startValues);
        endValues = removeExcludes(endValues);
        for (Transition childTransition : mTransitions) {
            childTransition.createAnimators(sceneRoot, startValues, endValues);
        }
    }

    private TransitionValuesMaps removeExcludes(TransitionValuesMaps values) {
        if (mTargetIds.isEmpty() && mTargetIdExcludes == null && mTargetTypeExcludes == null
                && mTargets.isEmpty()) {
            return values;
        }
        TransitionValuesMaps included = new TransitionValuesMaps();
        int numValues = values.viewValues.size();
        for (int i = 0; i < numValues; i++) {
            View view = values.viewValues.keyAt(i);
            if (isValidTarget(view, view.getId())) {
                included.viewValues.put(view, values.viewValues.valueAt(i));
            }
        }
        numValues = values.idValues.size();
        for (int i = 0; i < numValues; i++) {
            int id = values.idValues.keyAt(i);
            TransitionValues transitionValues = values.idValues.valueAt(i);
            if (isValidTarget(transitionValues.view, id)) {
                included.idValues.put(id, transitionValues);
            }
        }
        numValues = values.itemIdValues.size();
        for (int i = 0; i < numValues; i++) {
            long id = values.itemIdValues.keyAt(i);
            TransitionValues transitionValues = values.itemIdValues.valueAt(i);
            if (isValidTarget(transitionValues.view, id)) {
                included.itemIdValues.put(id, transitionValues);
            }
        }
        return included;
    }

    /**
     * @hide
     */