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

Commit a163646c authored by Inseob Kim's avatar Inseob Kim Committed by Android (Google) Code Review
Browse files

Revert "Make AllAppsRecyclerViewContainer GONE when hidden"

This reverts commit df59c2e5.

Reason for revert: b/293944420

Change-Id: I0ae830e1a5ba8affb6815c9e96ffee1b20c6e8d0
parent df59c2e5
Loading
Loading
Loading
Loading
+15 −39
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.launcher3.allapps;
import static com.android.launcher3.allapps.ActivityAllAppsContainerView.AdapterHolder.SEARCH;
import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_WORK_DISABLED_CARD;
import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_WORK_EDU_CARD;
import static com.android.launcher3.config.FeatureFlags.ALL_APPS_GONE_VISIBILITY;
import static com.android.launcher3.config.FeatureFlags.ENABLE_ALL_APPS_RV_PREINFLATION;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_COUNT;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_TAP_ON_PERSONAL_TAB;
@@ -552,14 +551,17 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
        mAllAppsStore.unregisterIconContainer(mAH.get(AdapterHolder.WORK).mRecyclerView);
        mAllAppsStore.unregisterIconContainer(mAH.get(AdapterHolder.SEARCH).mRecyclerView);

        final AllAppsRecyclerView mainRecyclerView;
        final AllAppsRecyclerView workRecyclerView;
        if (mUsingTabs) {
            mainRecyclerView = (AllAppsRecyclerView) mViewPager.getChildAt(0);
            workRecyclerView = (AllAppsRecyclerView) mViewPager.getChildAt(1);
            mAH.get(AdapterHolder.MAIN).setup(mainRecyclerView, mPersonalMatcher);
            mAH.get(AdapterHolder.WORK).setup(workRecyclerView, mWorkManager.getMatcher());
            workRecyclerView.setId(R.id.apps_list_view_work);
            mAH.get(AdapterHolder.MAIN).setup(mViewPager.getChildAt(0), mPersonalMatcher);
            mAH.get(AdapterHolder.WORK).setup(mViewPager.getChildAt(1), mWorkManager.getMatcher());
            mAH.get(AdapterHolder.WORK).mRecyclerView.setId(R.id.apps_list_view_work);
            if (ENABLE_ALL_APPS_RV_PREINFLATION.get()) {
                // Let main and work rv share same view pool.
                ((RecyclerView) mViewPager.getChildAt(0))
                        .setRecycledViewPool(mAllAppsStore.getRecyclerViewPool());
                ((RecyclerView) mViewPager.getChildAt(1))
                        .setRecycledViewPool(mAllAppsStore.getRecyclerViewPool());
            }
            if (FeatureFlags.ENABLE_EXPANDING_PAUSE_WORK_BUTTON.get()) {
                mAH.get(AdapterHolder.WORK).mRecyclerView.addOnScrollListener(
                        mWorkManager.newScrollListener());
@@ -584,15 +586,13 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
                onActivePageChanged(mViewPager.getNextPage());
            }
        } else {
            mainRecyclerView = findViewById(R.id.apps_list_view);
            workRecyclerView = null;
            mAH.get(AdapterHolder.MAIN).setup(mainRecyclerView, null);
            mAH.get(AdapterHolder.MAIN).setup(findViewById(R.id.apps_list_view), null);
            mAH.get(AdapterHolder.WORK).mRecyclerView = null;
            if (ENABLE_ALL_APPS_RV_PREINFLATION.get()) {
                mAH.get(AdapterHolder.MAIN).mRecyclerView
                        .setRecycledViewPool(mAllAppsStore.getRecyclerViewPool());
            }
        }
        setUpCustomRecyclerViewPool(
                mainRecyclerView,
                workRecyclerView,
                mAllAppsStore.getRecyclerViewPool());
        setupHeader();

        if (isSearchBarFloating()) {
@@ -609,30 +609,6 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
        mAllAppsStore.registerIconContainer(mAH.get(AdapterHolder.SEARCH).mRecyclerView);
    }

    /**
     * If {@link ENABLE_ALL_APPS_RV_PREINFLATION} is enabled, wire custom
     * {@link RecyclerView.RecycledViewPool} to main and work {@link AllAppsRecyclerView}.
     *
     * Then if {@link ALL_APPS_GONE_VISIBILITY} is enabled, update max pool size. This is because
     * all apps rv's hidden visibility is changed to {@link View#GONE} from {@link View#INVISIBLE),
     * thus we cannot rely on layout pass to update pool size.
     */
    private static void setUpCustomRecyclerViewPool(
            @NonNull AllAppsRecyclerView mainRecyclerView,
            @Nullable AllAppsRecyclerView workRecyclerView,
            @NonNull RecyclerView.RecycledViewPool recycledViewPool) {
        if (!ENABLE_ALL_APPS_RV_PREINFLATION.get()) {
            return;
        }
        mainRecyclerView.setRecycledViewPool(recycledViewPool);
        if (workRecyclerView != null) {
            workRecyclerView.setRecycledViewPool(recycledViewPool);
        }
        if (ALL_APPS_GONE_VISIBILITY.get()) {
            mainRecyclerView.updatePoolSize();
        }
    }

    private void replaceAppsRVContainer(boolean showTabs) {
        for (int i = AdapterHolder.MAIN; i <= AdapterHolder.WORK; i++) {
            AdapterHolder adapterHolder = mAH.get(i);
+1 −14
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
 */
package com.android.launcher3.allapps;

import static com.android.launcher3.config.FeatureFlags.ALL_APPS_GONE_VISIBILITY;
import static com.android.launcher3.logger.LauncherAtom.ContainerInfo;
import static com.android.launcher3.logger.LauncherAtom.SearchResultContainer;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_PERSONAL_SCROLLED_DOWN;
@@ -27,8 +26,6 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_VERTICAL_SWIPE_END;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_WORK_FAB_BUTTON_COLLAPSE;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_WORK_FAB_BUTTON_EXTEND;
import static com.android.launcher3.recyclerview.AllAppsRecyclerViewPoolKt.EXTRA_ICONS_COUNT;
import static com.android.launcher3.recyclerview.AllAppsRecyclerViewPoolKt.PREINFLATE_ICONS_ROW_COUNT;
import static com.android.launcher3.util.LogConfig.SEARCH_LOGGING;

import android.content.Context;
@@ -99,18 +96,8 @@ public class AllAppsRecyclerView extends FastScrollRecyclerView {
        int approxRows = (int) Math.ceil(grid.availableHeightPx / grid.allAppsIconSizePx);
        pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_EMPTY_SEARCH, 1);
        pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_ALL_APPS_DIVIDER, 1);

        // If all apps' hidden visibility is INVISIBLE, we will need to preinflate one page of
        // all apps icons for smooth scrolling.
        int maxPoolSizeForAppIcons = (approxRows + 1) * grid.numShownAllAppsColumns;
        if (ALL_APPS_GONE_VISIBILITY.get()) {
            // If all apps' hidden visibility is GONE, we need to increase prefinated icons number
            // by [PREINFLATE_ICONS_ROW_COUNT] rows + [EXTRA_ICONS_COUNT] for fast opening all apps.
            maxPoolSizeForAppIcons +=
                    PREINFLATE_ICONS_ROW_COUNT * grid.numShownAllAppsColumns + EXTRA_ICONS_COUNT;
        }
        pool.setMaxRecycledViews(
                AllAppsGridAdapter.VIEW_TYPE_ICON, maxPoolSizeForAppIcons);
                AllAppsGridAdapter.VIEW_TYPE_ICON, (approxRows + 1) * grid.numShownAllAppsColumns);
    }

    @Override
+1 −2
Original line number Diff line number Diff line
@@ -438,8 +438,7 @@ public class AllAppsTransitionController
        mAppsView = appsView;
        mAppsView.setScrimView(scrimView);

        mAppsViewAlpha = new MultiValueAlpha(mAppsView, APPS_VIEW_INDEX_COUNT,
                FeatureFlags.ALL_APPS_GONE_VISIBILITY.get() ? View.GONE : View.INVISIBLE);
        mAppsViewAlpha = new MultiValueAlpha(mAppsView, APPS_VIEW_INDEX_COUNT);
        mAppsViewAlpha.setUpdateVisibility(true);
        mAppsViewTranslationY = new MultiPropertyFactory<>(
                mAppsView, VIEW_TRANSLATE_Y, APPS_VIEW_INDEX_COUNT, Float::sum);
+2 −12
Original line number Diff line number Diff line
@@ -53,18 +53,8 @@ public class AlphaUpdateListener extends AnimatorListenerAdapter
    }

    public static void updateVisibility(View view) {
        updateVisibility(view, View.INVISIBLE);
    }

    /**
     * Update view's visibility.
     *
     * @param view View that needs to update visibility.
     * @param hiddenVisibility {@link View#GONE} or {@link View#INVISIBLE}
     */
    public static void updateVisibility(View view, int hiddenVisibility) {
        if (view.getAlpha() < ALPHA_CUTOFF_THRESHOLD && view.getVisibility() != hiddenVisibility) {
            view.setVisibility(hiddenVisibility);
        if (view.getAlpha() < ALPHA_CUTOFF_THRESHOLD && view.getVisibility() != View.INVISIBLE) {
            view.setVisibility(View.INVISIBLE);
        } else if (view.getAlpha() > ALPHA_CUTOFF_THRESHOLD
                && view.getVisibility() != View.VISIBLE) {
            if (view instanceof ViewGroup) {
+2 −7
Original line number Diff line number Diff line
@@ -395,15 +395,10 @@ public final class FeatureFlags {

    // TODO(Block 33): Clean up flags
    public static final BooleanFlag ENABLE_ALL_APPS_RV_PREINFLATION = getDebugFlag(288161355,
            "ENABLE_ALL_APPS_RV_PREINFLATION", ENABLED,
            "ENABLE_ALL_APPS_RV_PREINFLATION", DISABLED,
            "Enables preinflating all apps icons to avoid scrolling jank.");

    // TODO(Block 34): Clean up flags
    public static final BooleanFlag ALL_APPS_GONE_VISIBILITY = getDebugFlag(291651514,
            "ALL_APPS_GONE_VISIBILITY", ENABLED,
            "Set all apps container view's hidden visibility to GONE instead of INVISIBLE.");

    // TODO(Block 35): Empty block
    // TODO(Block 34): Empty block

    public static class BooleanFlag {

Loading