question: void computeMinMaxScroll ( ArrayList < T > data , boolean launchedWithAltTab , boolean launchedFromHome ) { mTaskProgressMap . clear ( ) ; if ( data . isEmpty ( ) ) { mMinScrollP = mMaxScrollP = 0 ; return ; } int taskHeight = mTaskRect . height ( ) ; float pAtBottomOfStackRect = screenYToCurveProgress ( mStackVisibleRect . bottom ) ; float pWithinAffiliateTop = screenYToCurveProgress ( mStackVisibleRect . bottom - mWithinAffiliationOffset ) ; float scale = curveProgressToScale ( pWithinAffiliateTop ) ; int scaleYOffset = ( int ) ( ( ( 1f - scale ) * taskHeight ) / 2 ) ; pWithinAffiliateTop = screenYToCurveProgress ( mStackVisibleRect . bottom - mWithinAffiliationOffset + scaleYOffset ) ; float pWithinAffiliateOffset = pAtBottomOfStackRect - pWithinAffiliateTop ; float pBetweenAffiliateOffset = pAtBottomOfStackRect - screenYToCurveProgress ( mStackVisibleRect . bottom - mBetweenAffiliationOffset ) ; float pTaskHeightOffset = pAtBottomOfStackRect - screenYToCurveProgress ( mStackVisibleRect . bottom - taskHeight ) ; float pNavBarOffset = pAtBottomOfStackRect - screenYToCurveProgress ( mStackVisibleRect . bottom - ( mStackVisibleRect . bottom - mStackRect . bottom ) ) ; float pAtBackMostCardTop = 0.5f ; float pAtFrontMostCardTop = pAtBackMostCardTop ; int taskCount = data . size ( ) ; for ( int i = 0 ; i < taskCount ; i ++ ) { mTaskProgressMap . put ( data . get ( i ) , pAtFrontMostCardTop ) ; if ( i < ( taskCount - 1 ) ) { float pPeek = pBetweenAffiliateOffset ; pAtFrontMostCardTop += pPeek ; } } mMaxScrollP = pAtFrontMostCardTop - ( ( 1f - pTaskHeightOffset - pNavBarOffset ) ) ; mMinScrollP = data . size ( ) == 1 ? Math . max ( mMaxScrollP , 0f ) : 0f ; if ( launchedWithAltTab && launchedFromHome ) { mInitialScrollP = mMaxScrollP ; } else { mInitialScrollP = pAtFrontMostCardTop - 0.825f ; } mInitialScrollP = Math . min ( mMaxScrollP , Math . max ( 0 , mInitialScrollP ) ) ; }
target:  Computes the minimum and maximum scroll progress values.  This method may be called before the RecentsConfiguration is set, so we need to pass in the alt-tab state.