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

Commit 19d13817 authored by George Mount's avatar George Mount Committed by Android (Google) Code Review
Browse files

Merge "Properly filter out excluded views in createAnimators() call."

parents 6dd5a1d3 8c0ceb34
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
     */