Search in sources :

Example 1 with RecentsAnimationListener

use of com.android.quickstep.RecentsAnimationCallbacks.RecentsAnimationListener in project android_packages_apps_Launcher3 by crdroidandroid.

the class OverviewCommandHelper method executeCommand.

/**
 * Executes the task and returns true if next task can be executed. If false, then the next
 * task is deferred until {@link #scheduleNextTask} is called
 */
private <T extends StatefulActivity<?>> boolean executeCommand(CommandInfo cmd) {
    BaseActivityInterface<?, T> activityInterface = mOverviewComponentObserver.getActivityInterface();
    RecentsView recents = activityInterface.getVisibleRecentsView();
    if (recents == null) {
        if (cmd.type == TYPE_HIDE) {
            // already hidden
            return true;
        }
    } else {
        switch(cmd.type) {
            case TYPE_SHOW:
                // already visible
                return true;
            case TYPE_HIDE:
                {
                    int currentPage = recents.getNextPage();
                    TaskView tv = (currentPage >= 0 && currentPage < recents.getTaskViewCount()) ? (TaskView) recents.getPageAt(currentPage) : null;
                    return launchTask(recents, tv, cmd);
                }
            case TYPE_TOGGLE:
                return launchTask(recents, getNextTask(recents), cmd);
        }
    }
    if (activityInterface.switchToRecentsIfVisible(() -> scheduleNextTask(cmd))) {
        // If successfully switched, wait until animation finishes
        return false;
    }
    final T activity = activityInterface.getCreatedActivity();
    if (activity != null) {
        InteractionJankMonitorWrapper.begin(activity.getRootView(), InteractionJankMonitorWrapper.CUJ_QUICK_SWITCH);
    }
    GestureState gestureState = mService.createGestureState(GestureState.DEFAULT_STATE);
    gestureState.setHandlingAtomicEvent(true);
    AbsSwipeUpHandler interactionHandler = mService.getSwipeUpHandlerFactory().newHandler(gestureState, cmd.createTime);
    interactionHandler.setGestureEndCallback(() -> onTransitionComplete(cmd, interactionHandler));
    interactionHandler.initWhenReady();
    RecentsAnimationListener recentAnimListener = new RecentsAnimationListener() {

        @Override
        public void onRecentsAnimationStart(RecentsAnimationController controller, RecentsAnimationTargets targets) {
            interactionHandler.onGestureEnded(0, new PointF(), new PointF());
            cmd.removeListener(this);
        }

        @Override
        public void onRecentsAnimationCanceled(ThumbnailData thumbnailData) {
            interactionHandler.onGestureCancelled();
            cmd.removeListener(this);
            RecentsView createdRecents = activityInterface.getCreatedActivity().getOverviewPanel();
            if (createdRecents != null) {
                createdRecents.onRecentsAnimationComplete();
            }
        }
    };
    if (mTaskAnimationManager.isRecentsAnimationRunning()) {
        cmd.mActiveCallbacks = mTaskAnimationManager.continueRecentsAnimation(gestureState);
        cmd.mActiveCallbacks.addListener(interactionHandler);
        mTaskAnimationManager.notifyRecentsAnimationState(interactionHandler);
        interactionHandler.onGestureStarted(true);
        cmd.mActiveCallbacks.addListener(recentAnimListener);
        mTaskAnimationManager.notifyRecentsAnimationState(recentAnimListener);
    } else {
        Intent intent = new Intent(interactionHandler.getLaunchIntent());
        intent.putExtra(INTENT_EXTRA_LOG_TRACE_ID, gestureState.getGestureId());
        cmd.mActiveCallbacks = mTaskAnimationManager.startRecentsAnimation(gestureState, intent, interactionHandler);
        interactionHandler.onGestureStarted(false);
        cmd.mActiveCallbacks.addListener(recentAnimListener);
    }
    Trace.beginAsyncSection(TRANSITION_NAME, 0);
    return false;
}
Also used : TaskView(com.android.quickstep.views.TaskView) ThumbnailData(com.android.systemui.shared.recents.model.ThumbnailData) PointF(android.graphics.PointF) RecentsView(com.android.quickstep.views.RecentsView) Intent(android.content.Intent) RecentsAnimationListener(com.android.quickstep.RecentsAnimationCallbacks.RecentsAnimationListener)

Aggregations

Intent (android.content.Intent)1 PointF (android.graphics.PointF)1 RecentsAnimationListener (com.android.quickstep.RecentsAnimationCallbacks.RecentsAnimationListener)1 RecentsView (com.android.quickstep.views.RecentsView)1 TaskView (com.android.quickstep.views.TaskView)1 ThumbnailData (com.android.systemui.shared.recents.model.ThumbnailData)1