private void updateDisappearingMountItems(LayoutState newLayoutState) { final Map<TransitionId, ?> nextMountedTransitionIds = newLayoutState.getTransitionIdMapping(); for (TransitionId transitionId : nextMountedTransitionIds.keySet()) { final OutputUnitsAffinityGroup<MountItem> disappearingItem = mDisappearingMountItems.remove(transitionId); if (disappearingItem != null) { endUnmountDisappearingItem(disappearingItem); } } }
private void createNewTransitions(LayoutState newLayoutState, Transition rootTransition) { prepareTransitionManager(newLayoutState); mTransitionManager.setupTransitions(mLastMountedLayoutState, newLayoutState, rootTransition); final Map<TransitionId, ?> nextTransitionIds = newLayoutState.getTransitionIdMapping(); for (TransitionId transitionId : nextTransitionIds.keySet()) { if (mTransitionManager.isAnimating(transitionId)) { mAnimatingTransitionIds.add(transitionId); } } }
private void regenerateAnimationLockedIndices(LayoutState newLayoutState) { final Map<TransitionId, OutputUnitsAffinityGroup<LayoutOutput>> transitionMapping = newLayoutState.getTransitionIdMapping(); if (transitionMapping != null) { for (TransitionId transitionId : transitionMapping.keySet()) { if (!mAnimatingTransitionIds.contains(transitionId)) { continue; } if (mAnimationLockedIndices == null) { mAnimationLockedIndices = new int[newLayoutState.getMountableOutputCount()]; } final OutputUnitsAffinityGroup<LayoutOutput> group = transitionMapping.get(transitionId); for (int j = 0, sz = group.size(); j < sz; j++) { final LayoutOutput layoutOutput = group.getAt(j); final int position = newLayoutState.getLayoutOutputPositionForId(layoutOutput.getId()); updateAnimationLockCount(newLayoutState, position, true); } } } else { mAnimationLockedIndices = null; } if (AnimationsDebug.ENABLED) { AnimationsDebug.debugPrintAnimationLockedIndices(newLayoutState, mAnimationLockedIndices); } }
nextLayoutState.getTransitionIdMapping(); if (currentLayoutState == null) { for (TransitionId transitionId : nextTransitionIds.keySet()) { currentLayoutState.getTransitionIdMapping(); final HashSet<TransitionId> seenInNewLayout = new HashSet<>();
@Test public void testGetTransitionKeyMapping() { ComponentContext c = new ComponentContext(application); LayoutState layoutState = LayoutState.calculate( c, mHasUniqueTransitionKeys, ComponentTree.generateComponentTreeId(), View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.EXACTLY), LayoutState.CalculateLayoutSource.TEST); layoutState.getTransitionIdMapping(); }
when(layoutState.getTransitions()) .thenReturn(transitions != null ? transitions.getChildren() : null); when(layoutState.getTransitionIdMapping()).thenReturn(transitionIdMapping); when(layoutState.getLayoutOutputsForTransitionId(any())) .then(
@Test public void testThrowIfSameTransitionKeyAppearsMultipleTimes() { mExpectedException.expect(RuntimeException.class); mExpectedException.expectMessage( "The transitionId 'TransitionId{\"test\", GLOBAL}' is defined multiple times in the same layout."); ComponentContext c = new ComponentContext(application); LayoutState layoutState = LayoutState.calculate( c, mHasNonUniqueTransitionKeys, ComponentTree.generateComponentTreeId(), View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.EXACTLY), LayoutState.CalculateLayoutSource.TEST); assertThat(layoutState.getTransitionIdMapping()).isNotNull(); } }