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

Commit 242bbb86 authored by Winson Chung's avatar Winson Chung
Browse files

Fixing transition animation in landscape on tablets (Bug 16867731)

- Also fixing the scroller, initial scroll state, and scroll bounds on large tablets

Change-Id: I886153748156fb442e4dc2b7ec6cf052da43ab88
parent d18a1da1
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -39,5 +39,8 @@
    <!-- The maximum count of notifications on Keyguard. The rest will be collapsed in an overflow
    <!-- The maximum count of notifications on Keyguard. The rest will be collapsed in an overflow
         card. -->
         card. -->
    <integer name="keyguard_max_notification_count">5</integer>
    <integer name="keyguard_max_notification_count">5</integer>

    <!-- Transposes the recents layout in landscape. -->
    <bool name="recents_transpose_layout_with_orientation">false</bool>
</resources>
</resources>
+9 −12
Original line number Original line Diff line number Diff line
@@ -37,8 +37,6 @@ public class RecentsConfiguration {
    static RecentsConfiguration sInstance;
    static RecentsConfiguration sInstance;
    static int sPrevConfigurationHashCode;
    static int sPrevConfigurationHashCode;


    DisplayMetrics mDisplayMetrics;

    /** Animations */
    /** Animations */
    public float animationPxMovementPerSecond;
    public float animationPxMovementPerSecond;


@@ -156,7 +154,6 @@ public class RecentsConfiguration {
        SharedPreferences settings = context.getSharedPreferences(context.getPackageName(), 0);
        SharedPreferences settings = context.getSharedPreferences(context.getPackageName(), 0);
        Resources res = context.getResources();
        Resources res = context.getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        DisplayMetrics dm = res.getDisplayMetrics();
        mDisplayMetrics = dm;


        // Debug mode
        // Debug mode
        debugModeEnabled = settings.getBoolean(Constants.Values.App.Key_DebugModeEnabled, false);
        debugModeEnabled = settings.getBoolean(Constants.Values.App.Key_DebugModeEnabled, false);
@@ -164,6 +161,15 @@ public class RecentsConfiguration {
            Console.Enabled = true;
            Console.Enabled = true;
        }
        }


        // Layout
        isLandscape = res.getConfiguration().orientation ==
                Configuration.ORIENTATION_LANDSCAPE;
        transposeRecentsLayoutWithOrientation =
                res.getBoolean(R.bool.recents_transpose_layout_with_orientation);

        // Insets
        displayRect.set(0, 0, dm.widthPixels, dm.heightPixels);

        // Animations
        // Animations
        animationPxMovementPerSecond =
        animationPxMovementPerSecond =
                res.getDimensionPixelSize(R.dimen.recents_animation_movement_in_dps_per_second);
                res.getDimensionPixelSize(R.dimen.recents_animation_movement_in_dps_per_second);
@@ -174,15 +180,6 @@ public class RecentsConfiguration {
        filteringNewViewsAnimDuration =
        filteringNewViewsAnimDuration =
                res.getInteger(R.integer.recents_filter_animate_new_views_duration);
                res.getInteger(R.integer.recents_filter_animate_new_views_duration);


        // Insets
        displayRect.set(0, 0, dm.widthPixels, dm.heightPixels);

        // Layout
        isLandscape = res.getConfiguration().orientation ==
                Configuration.ORIENTATION_LANDSCAPE;
        transposeRecentsLayoutWithOrientation =
                res.getBoolean(R.bool.recents_transpose_layout_with_orientation);

        // Search Bar
        // Search Bar
        searchBarSpaceHeightPx = res.getDimensionPixelSize(R.dimen.recents_search_bar_space_height);
        searchBarSpaceHeightPx = res.getDimensionPixelSize(R.dimen.recents_search_bar_space_height);
        searchBarAppWidgetId = settings.getInt(Constants.Values.App.Key_SearchAppWidgetId, -1);
        searchBarAppWidgetId = settings.getInt(Constants.Values.App.Key_SearchAppWidgetId, -1);
+9 −6
Original line number Original line Diff line number Diff line
@@ -60,8 +60,6 @@ public class TaskStackViewLayoutAlgorithm {


    public TaskStackViewLayoutAlgorithm(RecentsConfiguration config) {
    public TaskStackViewLayoutAlgorithm(RecentsConfiguration config) {
        mConfig = config;
        mConfig = config;
        mWithinAffiliationOffset = mConfig.taskBarHeight;
        mBetweenAffiliationOffset = 4 * mConfig.taskBarHeight;


        // Precompute the path
        // Precompute the path
        initializeCurve();
        initializeCurve();
@@ -84,6 +82,11 @@ public class TaskStackViewLayoutAlgorithm {
        int left = mStackRect.left + (mStackRect.width() - size) / 2;
        int left = mStackRect.left + (mStackRect.width() - size) / 2;
        mTaskRect.set(left, mStackRect.top,
        mTaskRect.set(left, mStackRect.top,
                left + size, mStackRect.top + size);
                left + size, mStackRect.top + size);

        // Update the affiliation offsets
        float visibleTaskPct = 0.55f;
        mWithinAffiliationOffset = mConfig.taskBarHeight;
        mBetweenAffiliationOffset = (int) (visibleTaskPct * mTaskRect.height());
    }
    }


    /** Computes the minimum and maximum scroll progress values.  This method may be called before
    /** Computes the minimum and maximum scroll progress values.  This method may be called before
@@ -110,8 +113,7 @@ public class TaskStackViewLayoutAlgorithm {
                screenYToCurveProgress(mStackVisibleRect.bottom - (mStackVisibleRect.bottom - mStackRect.bottom));
                screenYToCurveProgress(mStackVisibleRect.bottom - (mStackVisibleRect.bottom - mStackRect.bottom));


        // Update the task offsets
        // Update the task offsets
        float pAtBackMostCardTop = screenYToCurveProgress(mStackVisibleRect.top +
        float pAtBackMostCardTop = 0.5f;
                (mStackVisibleRect.height() - taskHeight) / 2);
        float pAtFrontMostCardTop = pAtBackMostCardTop;
        float pAtFrontMostCardTop = pAtBackMostCardTop;
        float pAtSecondFrontMostCardTop = pAtBackMostCardTop;
        float pAtSecondFrontMostCardTop = pAtBackMostCardTop;
        int taskCount = tasks.size();
        int taskCount = tasks.size();
@@ -128,14 +130,15 @@ public class TaskStackViewLayoutAlgorithm {
            }
            }
        }
        }


        mMinScrollP = 0f;
        mMaxScrollP = pAtFrontMostCardTop - ((1f - pTaskHeightOffset - pNavBarOffset));
        mMaxScrollP = pAtFrontMostCardTop - ((1f - pTaskHeightOffset - pNavBarOffset));
        mMinScrollP = tasks.size() == 1 ? Math.max(mMaxScrollP, 0f) : 0f;
        if (launchedWithAltTab) {
        if (launchedWithAltTab) {
            // Center the second most task, since that will be focused first
            // Center the second most task, since that will be focused first
            mInitialScrollP = pAtSecondFrontMostCardTop - 0.5f;
            mInitialScrollP = pAtSecondFrontMostCardTop - 0.5f;
        } else {
        } else {
            mInitialScrollP = pAtSecondFrontMostCardTop - ((1f - pTaskHeightOffset - pNavBarOffset));
            mInitialScrollP = pAtFrontMostCardTop - 0.825f;
        }
        }
        mInitialScrollP = Math.max(0, mInitialScrollP);
    }
    }


    /** Update/get the transform */
    /** Update/get the transform */