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

Commit 7a1ca0b2 authored by Andras Kloczl's avatar Andras Kloczl
Browse files

Launcher home currentpage refactoring

Calling cancelLongPress on all the visible pages when needed
and enabling hardware acceleration on them when a folder
animation is in progress.

Test: manual
Bug: 174464691
Change-Id: Ib11265abfd184fed41acc9a6347a32aec12895f2
parent 21784eaf
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -926,8 +926,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
        if (disallowIntercept) {
            // We need to make sure to cancel our long press if
            // a scrollable widget takes over touch events
            final View currentPage = getPageAt(mCurrentPage);
            currentPage.cancelLongPress();
            cancelCurrentPageLongPress();
        }
        super.requestDisallowInterceptTouchEvent(disallowIntercept);
    }
+19 −8
Original line number Diff line number Diff line
@@ -78,7 +78,6 @@ import com.android.launcher3.PagedView;
import com.android.launcher3.R;
import com.android.launcher3.ShortcutAndWidgetContainer;
import com.android.launcher3.Utilities;
import com.android.launcher3.Workspace;
import com.android.launcher3.Workspace.ItemOperator;
import com.android.launcher3.accessibility.AccessibleDragListenerAdapter;
import com.android.launcher3.accessibility.FolderAccessibilityHelper;
@@ -534,9 +533,25 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo
    }

    private void startAnimation(final AnimatorSet a) {
        final Workspace workspace = mLauncher.getWorkspace();
        final CellLayout currentCellLayout =
                (CellLayout) workspace.getChildAt(workspace.getCurrentPage());
        mLauncher.getWorkspace().getVisiblePages()
                .forEach(visiblePage -> addAnimatorListenerForPage(a, (CellLayout) visiblePage));

        a.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationStart(Animator animation) {
                mState = STATE_ANIMATING;
                mCurrentAnimator = a;
            }

            @Override
            public void onAnimationEnd(Animator animation) {
                mCurrentAnimator = null;
            }
        });
        a.start();
    }

    private void addAnimatorListenerForPage(AnimatorSet a, CellLayout currentCellLayout) {
        final boolean useHardware = shouldUseHardwareLayerForAnimation(currentCellLayout);
        final boolean wasHardwareAccelerated = currentCellLayout.isHardwareLayerEnabled();

@@ -546,8 +561,6 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo
                if (useHardware) {
                    currentCellLayout.enableHardwareLayer(true);
                }
                mState = STATE_ANIMATING;
                mCurrentAnimator = a;
            }

            @Override
@@ -555,10 +568,8 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo
                if (useHardware) {
                    currentCellLayout.enableHardwareLayer(wasHardwareAccelerated);
                }
                mCurrentAnimator = null;
            }
        });
        a.start();
    }

    private boolean shouldUseHardwareLayerForAnimation(CellLayout currentCellLayout) {