diff options
author | Kevin <kevhan@google.com> | 2019-01-07 17:22:05 -0800 |
---|---|---|
committer | Kevin <kevhan@google.com> | 2019-01-10 12:57:15 -0800 |
commit | ec6e41dda1b287003420096c70ce7864f466d75f (patch) | |
tree | e783f952abe6fe941905921ec2c51e0f9e4543dc /quickstep/recents_ui_overrides/src/com/android/launcher3 | |
parent | 238f324ebff31ecb7151a7a94955c857ca8e33de (diff) | |
download | android_packages_apps_Trebuchet-ec6e41dda1b287003420096c70ce7864f466d75f.tar.gz android_packages_apps_Trebuchet-ec6e41dda1b287003420096c70ce7864f466d75f.tar.bz2 android_packages_apps_Trebuchet-ec6e41dda1b287003420096c70ce7864f466d75f.zip |
Split out recents logic from UiFactory
This CL splits out RecentsView specific logic from UiFactory and
overrides it in the Go IconRecents version, stubbing out much of the
functionality.
Bug: 114136250
Test: Manual test NexusLauncher, Launcher3GoQuickstep
Test: Build Launcher3GoIconRecents
Change-Id: I043f7f2b2581831f1a74a80110e9c4c25231c046
Diffstat (limited to 'quickstep/recents_ui_overrides/src/com/android/launcher3')
-rw-r--r-- | quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java new file mode 100644 index 000000000..f18f43c4c --- /dev/null +++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3.uioverrides; + +import static android.view.View.VISIBLE; + +import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY; +import static com.android.launcher3.LauncherState.NORMAL; +import static com.android.launcher3.LauncherState.OVERVIEW; + +import com.android.launcher3.Launcher; +import com.android.launcher3.LauncherState; +import com.android.launcher3.LauncherStateManager.StateHandler; +import com.android.launcher3.anim.AnimatorPlaybackController; +import com.android.launcher3.util.TouchController; +import com.android.quickstep.views.RecentsView; + +/** + * Provides recents-related {@link UiFactory} logic and classes. + */ +public final class RecentsUiFactory { + + // Scale recents takes before animating in + private static final float RECENTS_PREPARE_SCALE = 1.33f; + + private RecentsUiFactory() {} + + /** + * Creates and returns a touch controller for swiping recents tasks. + * + * @param launcher the launcher activity + * @return the touch controller for recents tasks + */ + public static TouchController createTaskSwipeController(Launcher launcher) { + return new LauncherTaskViewController(launcher); + } + + /** + * Creates and returns the controller responsible for recents view state transitions. + * + * @param launcher the launcher activity + * @return state handler for recents + */ + public static StateHandler createRecentsViewStateController(Launcher launcher) { + return new RecentsViewStateController(launcher); + } + + /** + * Prepare the recents view to animate in. + * + * @param launcher the launcher activity + */ + public static void prepareToShowRecents(Launcher launcher) { + RecentsView overview = launcher.getOverviewPanel(); + if (overview.getVisibility() != VISIBLE || overview.getContentAlpha() == 0) { + SCALE_PROPERTY.set(overview, RECENTS_PREPARE_SCALE); + } + } + + /** + * Clean-up logic that occurs when recents is no longer in use/visible. + * + * @param launcher the launcher activity + */ + public static void resetRecents(Launcher launcher) { + RecentsView recents = launcher.getOverviewPanel(); + recents.reset(); + } + + /** + * Recents logic that triggers when launcher state changes or launcher activity stops/resumes. + * + * @param launcher the launcher activity + */ + public static void onLauncherStateOrResumeChanged(Launcher launcher) { + LauncherState state = launcher.getStateManager().getState(); + if (state == NORMAL) { + launcher.<RecentsView>getOverviewPanel().setSwipeDownShouldLaunchApp(false); + } + } + + private static final class LauncherTaskViewController extends + TaskViewTouchController<Launcher> { + + LauncherTaskViewController(Launcher activity) { + super(activity); + } + + @Override + protected boolean isRecentsInteractive() { + return mActivity.isInState(OVERVIEW); + } + + @Override + protected void onUserControlledAnimationCreated(AnimatorPlaybackController animController) { + mActivity.getStateManager().setCurrentUserControlledAnimation(animController); + } + } +} |