Search in sources :

Example 81 with Overview

use of com.android.launcher3.tapl.Overview in project android_packages_apps_Launcher3 by ProtonAOSP.

the class AbstractLauncherUiTest method checkLauncherIntegrity.

private void checkLauncherIntegrity(Launcher launcher, ContainerType expectedContainerType) {
    if (launcher != null) {
        final StateManager<LauncherState> stateManager = launcher.getStateManager();
        final LauncherState stableState = stateManager.getCurrentStableState();
        assertTrue("Stable state != state: " + stableState.getClass().getSimpleName() + ", " + stateManager.getState().getClass().getSimpleName(), stableState == stateManager.getState());
        final boolean isResumed = launcher.hasBeenResumed();
        final boolean isStarted = launcher.isStarted();
        checkLauncherState(launcher, expectedContainerType, isResumed, isStarted);
        final int ordinal = stableState.ordinal;
        switch(expectedContainerType) {
            case WORKSPACE:
            case WIDGETS:
                {
                    assertTrue("Launcher is not resumed in state: " + expectedContainerType, isResumed);
                    assertTrue(TestProtocol.stateOrdinalToString(ordinal), ordinal == TestProtocol.NORMAL_STATE_ORDINAL);
                    break;
                }
            case ALL_APPS:
                {
                    assertTrue("Launcher is not resumed in state: " + expectedContainerType, isResumed);
                    assertTrue(TestProtocol.stateOrdinalToString(ordinal), ordinal == TestProtocol.ALL_APPS_STATE_ORDINAL);
                    break;
                }
            case OVERVIEW:
                {
                    checkLauncherStateInOverview(launcher, expectedContainerType, isStarted, isResumed);
                    assertTrue(TestProtocol.stateOrdinalToString(ordinal), ordinal == TestProtocol.OVERVIEW_STATE_ORDINAL);
                    break;
                }
            case BACKGROUND:
                {
                    assertTrue("Launcher is resumed in state: " + expectedContainerType, !isResumed);
                    assertTrue(TestProtocol.stateOrdinalToString(ordinal), ordinal == TestProtocol.NORMAL_STATE_ORDINAL);
                    break;
                }
            default:
                throw new IllegalArgumentException("Illegal container: " + expectedContainerType);
        }
    } else {
        assertTrue("Container type is not BACKGROUND or FALLBACK_OVERVIEW: " + expectedContainerType, expectedContainerType == ContainerType.BACKGROUND || expectedContainerType == ContainerType.FALLBACK_OVERVIEW);
    }
}
Also used : LauncherState(com.android.launcher3.LauncherState)

Example 82 with Overview

use of com.android.launcher3.tapl.Overview in project android_packages_apps_Launcher3 by ProtonAOSP.

the class SwipeUpGestureTutorialController method fadeOutFakeTaskView.

/**
 * Fades the task view, optionally after animating to a fake Overview.
 */
void fadeOutFakeTaskView(boolean toOverviewFirst, boolean reset, @Nullable Runnable onEndRunnable) {
    cancelRunningAnimation();
    PendingAnimation anim = new PendingAnimation(300);
    if (toOverviewFirst) {
        anim.setFloat(mTaskViewSwipeUpAnimation.getCurrentShift(), AnimatedFloat.VALUE, 1, ACCEL);
        anim.addListener(new AnimatorListenerAdapter() {

            @Override
            public void onAnimationEnd(Animator animation, boolean isReverse) {
                PendingAnimation fadeAnim = new PendingAnimation(TASK_VIEW_END_ANIMATION_DURATION_MILLIS);
                if (reset) {
                    fadeAnim.setFloat(mTaskViewSwipeUpAnimation.getCurrentShift(), AnimatedFloat.VALUE, 0, ACCEL);
                    fadeAnim.addListener(mResetTaskView);
                } else {
                    fadeAnim.setViewAlpha(mFakeTaskView, 0, ACCEL);
                    fadeAnim.setViewAlpha(mFakePreviousTaskView, 0, ACCEL);
                }
                if (onEndRunnable != null) {
                    fadeAnim.addListener(AnimatorListeners.forSuccessCallback(onEndRunnable));
                }
                AnimatorSet animset = fadeAnim.buildAnim();
                if (reset && mTutorialFragment.isLargeScreen()) {
                    animset.addListener(new AnimatorListenerAdapter() {

                        @Override
                        public void onAnimationStart(Animator animation) {
                            super.onAnimationStart(animation);
                            Animator multiRowAnimation = mFakePreviousTaskView.createAnimationToMultiRowLayout();
                            if (multiRowAnimation != null) {
                                multiRowAnimation.setDuration(TASK_VIEW_END_ANIMATION_DURATION_MILLIS).start();
                            }
                        }
                    });
                }
                animset.setStartDelay(100);
                animset.start();
                mRunningWindowAnim = RunningWindowAnim.wrap(animset);
            }
        });
    } else {
        if (reset) {
            anim.setFloat(mTaskViewSwipeUpAnimation.getCurrentShift(), AnimatedFloat.VALUE, 0, ACCEL);
            anim.addListener(mResetTaskView);
        } else {
            anim.setViewAlpha(mFakeTaskView, 0, ACCEL);
            anim.setViewAlpha(mFakePreviousTaskView, 0, ACCEL);
        }
        if (onEndRunnable != null) {
            anim.addListener(AnimatorListeners.forSuccessCallback(onEndRunnable));
        }
    }
    AnimatorSet animset = anim.buildAnim();
    hideFakeTaskbar(/* animateToHotseat= */
    false);
    animset.start();
    mRunningWindowAnim = RunningWindowAnim.wrap(animset);
}
Also used : PendingAnimation(com.android.launcher3.anim.PendingAnimation) Animator(android.animation.Animator) ValueAnimator(android.animation.ValueAnimator) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) AnimatorSet(android.animation.AnimatorSet)

Example 83 with Overview

use of com.android.launcher3.tapl.Overview in project android_packages_apps_Launcher3 by ProtonAOSP.

the class OverviewToHomeAnim method animateWithVelocity.

/**
 * Starts the animation. If velocity < 0 (i.e. upwards), also plays a
 * {@link WorkspaceRevealAnim}.
 */
public void animateWithVelocity(float velocity) {
    StateManager<LauncherState> stateManager = mLauncher.getStateManager();
    LauncherState startState = stateManager.getState();
    if (startState != OVERVIEW) {
        Log.e(TAG, "animateFromOverviewToHome: unexpected start state " + startState);
    }
    AnimatorSet anim = new AnimatorSet();
    boolean playWorkspaceRevealAnim = velocity < 0;
    if (playWorkspaceRevealAnim) {
        WorkspaceRevealAnim workspaceRevealAnim = new WorkspaceRevealAnim(mLauncher, false);
        workspaceRevealAnim.addAnimatorListener(new AnimationSuccessListener() {

            @Override
            public void onAnimationSuccess(Animator animator) {
                mIsHomeStaggeredAnimFinished = true;
                maybeOverviewToHomeAnimComplete();
            }
        });
        anim.play(workspaceRevealAnim.getAnimators());
    } else {
        mIsHomeStaggeredAnimFinished = true;
    }
    StateAnimationConfig config = new StateAnimationConfig();
    if (playWorkspaceRevealAnim) {
        // WorkspaceRevealAnim handles the depth, so don't interfere.
        config.animFlags |= StateAnimationConfig.SKIP_DEPTH_CONTROLLER;
    }
    config.duration = startState.getTransitionDuration(mLauncher);
    AnimatorSet stateAnim = stateManager.createAtomicAnimation(startState, NORMAL, config);
    stateAnim.addListener(new AnimationSuccessListener() {

        @Override
        public void onAnimationSuccess(Animator animator) {
            mIsOverviewHidden = true;
            maybeOverviewToHomeAnimComplete();
        }
    });
    anim.play(stateAnim);
    stateManager.setCurrentAnimation(anim, NORMAL);
    anim.start();
}
Also used : LauncherState(com.android.launcher3.LauncherState) Animator(android.animation.Animator) StateAnimationConfig(com.android.launcher3.states.StateAnimationConfig) AnimatorSet(android.animation.AnimatorSet) AnimationSuccessListener(com.android.launcher3.anim.AnimationSuccessListener)

Example 84 with Overview

use of com.android.launcher3.tapl.Overview in project android_packages_apps_Launcher3 by ProtonAOSP.

the class TaskOverlayFactory method getEnabledShortcuts.

public static List<SystemShortcut> getEnabledShortcuts(TaskView taskView, DeviceProfile deviceProfile, TaskIdAttributeContainer taskContainer) {
    final ArrayList<SystemShortcut> shortcuts = new ArrayList<>();
    final BaseDraggingActivity activity = BaseActivity.fromContext(taskView.getContext());
    boolean hasMultipleTasks = taskView.getTaskIds()[1] != -1;
    for (TaskShortcutFactory menuOption : MENU_OPTIONS) {
        if (hasMultipleTasks && !menuOption.showForSplitscreen()) {
            continue;
        }
        SystemShortcut shortcut = menuOption.getShortcut(activity, taskContainer);
        if (shortcut == null) {
            continue;
        }
        if (menuOption == TaskShortcutFactory.SPLIT_SCREEN && FeatureFlags.ENABLE_SPLIT_SELECT.get()) {
            addSplitOptions(shortcuts, activity, taskView, deviceProfile);
        } else {
            shortcuts.add(shortcut);
        }
    }
    RecentsOrientedState orientedState = taskView.getRecentsView().getPagedViewOrientedState();
    boolean canLauncherRotate = orientedState.isRecentsActivityRotationAllowed();
    boolean isInLandscape = orientedState.getTouchRotation() != ROTATION_0;
    // Add overview actions to the menu when in in-place rotate landscape mode.
    if (!canLauncherRotate && isInLandscape) {
        // Add screenshot action to task menu.
        SystemShortcut screenshotShortcut = TaskShortcutFactory.SCREENSHOT.getShortcut(activity, taskContainer);
        if (screenshotShortcut != null) {
            shortcuts.add(screenshotShortcut);
        }
        // Add modal action only if display orientation is the same as the device orientation.
        if (orientedState.getDisplayRotation() == ROTATION_0) {
            SystemShortcut modalShortcut = TaskShortcutFactory.MODAL.getShortcut(activity, taskContainer);
            if (modalShortcut != null) {
                shortcuts.add(modalShortcut);
            }
        }
    }
    return shortcuts;
}
Also used : BaseDraggingActivity(com.android.launcher3.BaseDraggingActivity) SystemShortcut(com.android.launcher3.popup.SystemShortcut) SplitSelectSystemShortcut(com.android.quickstep.TaskShortcutFactory.SplitSelectSystemShortcut) ArrayList(java.util.ArrayList) RecentsOrientedState(com.android.quickstep.util.RecentsOrientedState)

Example 85 with Overview

use of com.android.launcher3.tapl.Overview in project android_packages_apps_Launcher3 by ProtonAOSP.

the class TaskViewUtils method findTaskViewToLaunch.

/**
 * Try to find a TaskView that corresponds with the component of the launched view.
 *
 * If this method returns a non-null TaskView, it will be used in composeRecentsLaunchAnimation.
 * Otherwise, we will assume we are using a normal app transition, but it's possible that the
 * opening remote target (which we don't get until onAnimationStart) will resolve to a TaskView.
 */
public static TaskView findTaskViewToLaunch(RecentsView recentsView, View v, RemoteAnimationTargetCompat[] targets) {
    if (v instanceof TaskView) {
        TaskView taskView = (TaskView) v;
        return recentsView.isTaskViewVisible(taskView) ? taskView : null;
    }
    // the task id of the opening task and see if we can find a match.
    if (v.getTag() instanceof ItemInfo) {
        ItemInfo itemInfo = (ItemInfo) v.getTag();
        ComponentName componentName = itemInfo.getTargetComponent();
        int userId = itemInfo.user.getIdentifier();
        if (componentName != null) {
            for (int i = 0; i < recentsView.getTaskViewCount(); i++) {
                TaskView taskView = recentsView.getTaskViewAt(i);
                if (recentsView.isTaskViewVisible(taskView)) {
                    Task.TaskKey key = taskView.getTask().key;
                    if (componentName.equals(key.getComponent()) && userId == key.userId) {
                        return taskView;
                    }
                }
            }
        }
    }
    if (targets == null) {
        return null;
    }
    // Resolve the opening task id
    int openingTaskId = -1;
    for (RemoteAnimationTargetCompat target : targets) {
        if (target.mode == MODE_OPENING) {
            openingTaskId = target.taskId;
            break;
        }
    }
    // If there is no opening task id, fall back to the normal app icon launch animation
    if (openingTaskId == -1) {
        return null;
    }
    // If the opening task id is not currently visible in overview, then fall back to normal app
    // icon launch animation
    TaskView taskView = recentsView.getTaskViewByTaskId(openingTaskId);
    if (taskView == null || !recentsView.isTaskViewVisible(taskView)) {
        return null;
    }
    return taskView;
}
Also used : GroupedTaskView(com.android.quickstep.views.GroupedTaskView) TaskView(com.android.quickstep.views.TaskView) Task(com.android.systemui.shared.recents.model.Task) ItemInfo(com.android.launcher3.model.data.ItemInfo) RemoteAnimationTargetCompat(com.android.systemui.shared.system.RemoteAnimationTargetCompat) ComponentName(android.content.ComponentName)

Aggregations

LauncherState (com.android.launcher3.LauncherState)53 Animator (android.animation.Animator)50 ValueAnimator (android.animation.ValueAnimator)42 StateAnimationConfig (com.android.launcher3.states.StateAnimationConfig)41 RecentsView (com.android.quickstep.views.RecentsView)40 AnimatorSet (android.animation.AnimatorSet)38 Launcher (com.android.launcher3.Launcher)36 AnimatorListenerAdapter (android.animation.AnimatorListenerAdapter)34 ObjectAnimator (android.animation.ObjectAnimator)30 LargeTest (androidx.test.filters.LargeTest)29 Test (org.junit.Test)29 Point (android.graphics.Point)24 View (android.view.View)22 DeviceProfile (com.android.launcher3.DeviceProfile)19 PendingAnimation (com.android.launcher3.anim.PendingAnimation)19 RemoteAnimationTargetCompat (com.android.systemui.shared.system.RemoteAnimationTargetCompat)19 ItemInfo (com.android.launcher3.model.data.ItemInfo)18 DepthController (com.android.launcher3.statehandlers.DepthController)17 Task (com.android.systemui.shared.recents.model.Task)17 Rect (android.graphics.Rect)16