diff options
Diffstat (limited to 'quickstep/src/com/android/launcher3/taskbar/TaskbarAnimationController.java')
-rw-r--r-- | quickstep/src/com/android/launcher3/taskbar/TaskbarAnimationController.java | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarAnimationController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarAnimationController.java deleted file mode 100644 index e20ddf88ce..0000000000 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarAnimationController.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (C) 2021 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.taskbar; - -import static com.android.launcher3.LauncherState.TASKBAR; - -import android.animation.Animator; - -import com.android.launcher3.BaseQuickstepLauncher; -import com.android.launcher3.Utilities; -import com.android.launcher3.taskbar.LauncherTaskbarUIController.TaskbarAnimationControllerCallbacks; -import com.android.quickstep.AnimatedFloat; -import com.android.quickstep.SystemUiProxy; -import com.android.systemui.shared.system.QuickStepContract; - -/** - * Works with TaskbarController to update the TaskbarView's visual properties based on factors such - * as LauncherState, whether Launcher is in the foreground, etc. - */ -public class TaskbarAnimationController { - - private static final long IME_VISIBILITY_ALPHA_DURATION = 120; - - private final BaseQuickstepLauncher mLauncher; - private final TaskbarAnimationControllerCallbacks mTaskbarCallbacks; - - // Background alpha. - private final AnimatedFloat mTaskbarBackgroundAlpha = new AnimatedFloat( - this::onTaskbarBackgroundAlphaChanged); - - // Overall visibility. - private final AnimatedFloat mTaskbarVisibilityAlphaForLauncherState = new AnimatedFloat( - this::updateVisibilityAlpha); - private final AnimatedFloat mTaskbarVisibilityAlphaForIme = new AnimatedFloat( - this::updateVisibilityAlphaForIme); - - // Scale. - private final AnimatedFloat mTaskbarScaleForLauncherState = new AnimatedFloat( - this::updateScale); - - // TranslationY. - private final AnimatedFloat mTaskbarTranslationYForLauncherState = new AnimatedFloat( - this::updateTranslationY); - - public TaskbarAnimationController(BaseQuickstepLauncher launcher, - TaskbarAnimationControllerCallbacks taskbarCallbacks) { - mLauncher = launcher; - mTaskbarCallbacks = taskbarCallbacks; - } - - protected void init() { - mTaskbarBackgroundAlpha.updateValue(mLauncher.hasBeenResumed() ? 0f : 1f); - boolean isVisibleForLauncherState = (mLauncher.getStateManager().getState() - .getVisibleElements(mLauncher) & TASKBAR) != 0; - mTaskbarVisibilityAlphaForLauncherState.updateValue(isVisibleForLauncherState ? 1f : 0f); - boolean isImeVisible = (SystemUiProxy.INSTANCE.get(mLauncher).getLastSystemUiStateFlags() - & QuickStepContract.SYSUI_STATE_IME_SHOWING) != 0; - mTaskbarVisibilityAlphaForIme.updateValue(isImeVisible ? 0f : 1f); - - onTaskbarBackgroundAlphaChanged(); - updateVisibilityAlpha(); - } - - protected void cleanup() { - setNavBarButtonAlpha(1f); - } - - protected AnimatedFloat getTaskbarVisibilityForLauncherState() { - return mTaskbarVisibilityAlphaForLauncherState; - } - - protected AnimatedFloat getTaskbarScaleForLauncherState() { - return mTaskbarScaleForLauncherState; - } - - protected AnimatedFloat getTaskbarTranslationYForLauncherState() { - return mTaskbarTranslationYForLauncherState; - } - - protected Animator createAnimToBackgroundAlpha(float toAlpha, long duration) { - return mTaskbarBackgroundAlpha.animateToValue(mTaskbarBackgroundAlpha.value, toAlpha) - .setDuration(duration); - } - - protected void animateToVisibilityForIme(float toAlpha) { - mTaskbarVisibilityAlphaForIme.animateToValue(mTaskbarVisibilityAlphaForIme.value, toAlpha) - .setDuration(IME_VISIBILITY_ALPHA_DURATION).start(); - } - - private void onTaskbarBackgroundAlphaChanged() { - mTaskbarCallbacks.updateTaskbarBackgroundAlpha(mTaskbarBackgroundAlpha.value); - updateVisibilityAlpha(); - updateScale(); - updateTranslationY(); - } - - private void updateVisibilityAlpha() { - // We use mTaskbarBackgroundAlpha as a proxy for whether Launcher is resumed/paused, the - // assumption being that Taskbar should always be visible regardless of the current - // LauncherState if Launcher is paused. - float alphaDueToIme = mTaskbarVisibilityAlphaForIme.value; - float alphaDueToLauncher = Math.max(mTaskbarBackgroundAlpha.value, - mTaskbarVisibilityAlphaForLauncherState.value); - float taskbarAlpha = alphaDueToLauncher * alphaDueToIme; - mTaskbarCallbacks.updateTaskbarVisibilityAlpha(taskbarAlpha); - - // Make the nav bar invisible if taskbar is visible. - setNavBarButtonAlpha(1f - taskbarAlpha); - } - - private void updateVisibilityAlphaForIme() { - updateVisibilityAlpha(); - float taskbarAlphaDueToIme = mTaskbarVisibilityAlphaForIme.value; - mTaskbarCallbacks.updateImeBarVisibilityAlpha(1f - taskbarAlphaDueToIme); - } - - private void updateScale() { - // We use mTaskbarBackgroundAlpha as a proxy for whether Launcher is resumed/paused, the - // assumption being that Taskbar should always be at scale 1f regardless of the current - // LauncherState if Launcher is paused. - float scale = mTaskbarScaleForLauncherState.value; - scale = Utilities.mapRange(mTaskbarBackgroundAlpha.value, scale, 1f); - mTaskbarCallbacks.updateTaskbarScale(scale); - } - - private void updateTranslationY() { - // We use mTaskbarBackgroundAlpha as a proxy for whether Launcher is resumed/paused, the - // assumption being that Taskbar should always be at translationY 0f regardless of the - // current LauncherState if Launcher is paused. - float translationY = mTaskbarTranslationYForLauncherState.value; - translationY = Utilities.mapRange(mTaskbarBackgroundAlpha.value, translationY, 0f); - mTaskbarCallbacks.updateTaskbarTranslationY(translationY); - } - - private void setNavBarButtonAlpha(float navBarAlpha) { - SystemUiProxy.INSTANCE.get(mLauncher).setNavBarButtonAlpha(navBarAlpha, false); - } -} |