• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.launcher3.uioverrides;
17 
18 import android.content.Context;
19 import android.content.res.Resources;
20 import android.graphics.Rect;
21 
22 import com.android.launcher3.DeviceProfile;
23 import com.android.launcher3.Launcher;
24 import com.android.launcher3.R;
25 import com.android.quickstep.QuickScrubController;
26 import com.android.quickstep.views.RecentsView;
27 
28 /**
29  * Extension of overview state used for QuickScrub
30  */
31 public class FastOverviewState extends OverviewState {
32 
33     private static final float MAX_PREVIEW_SCALE_UP = 1.3f;
34     /**
35      * Vertical transition of the task previews relative to the full container.
36      */
37     public static final float OVERVIEW_TRANSLATION_FACTOR = 0.4f;
38 
39     private static final int STATE_FLAGS = FLAG_DISABLE_RESTORE | FLAG_DISABLE_INTERACTION
40             | FLAG_OVERVIEW_UI | FLAG_HIDE_BACK_BUTTON | FLAG_DISABLE_ACCESSIBILITY;
41 
FastOverviewState(int id)42     public FastOverviewState(int id) {
43         super(id, QuickScrubController.QUICK_SCRUB_FROM_HOME_START_DURATION, STATE_FLAGS);
44     }
45 
46     @Override
onStateTransitionEnd(Launcher launcher)47     public void onStateTransitionEnd(Launcher launcher) {
48         super.onStateTransitionEnd(launcher);
49         RecentsView recentsView = launcher.getOverviewPanel();
50         recentsView.getQuickScrubController().onFinishedTransitionToQuickScrub();
51     }
52 
53     @Override
getVisibleElements(Launcher launcher)54     public int getVisibleElements(Launcher launcher) {
55         return NONE;
56     }
57 
58     @Override
getOverviewScaleAndTranslationYFactor(Launcher launcher)59     public float[] getOverviewScaleAndTranslationYFactor(Launcher launcher) {
60         RecentsView recentsView = launcher.getOverviewPanel();
61         recentsView.getTaskSize(sTempRect);
62 
63         return new float[] {getOverviewScale(launcher.getDeviceProfile(), sTempRect, launcher),
64                 OVERVIEW_TRANSLATION_FACTOR};
65     }
66 
getOverviewScale(DeviceProfile dp, Rect taskRect, Context context)67     public static float getOverviewScale(DeviceProfile dp, Rect taskRect, Context context) {
68         if (dp.isVerticalBarLayout()) {
69             return 1f;
70         }
71 
72         Resources res = context.getResources();
73         float usedHeight = taskRect.height() + res.getDimension(R.dimen.task_thumbnail_top_margin);
74         float usedWidth = taskRect.width() + 2 * (res.getDimension(R.dimen.recents_page_spacing)
75                 + res.getDimension(R.dimen.quickscrub_adjacent_visible_width));
76         return Math.min(Math.min(dp.availableHeightPx / usedHeight,
77                 dp.availableWidthPx / usedWidth), MAX_PREVIEW_SCALE_UP);
78     }
79 
80     @Override
onStateDisabled(Launcher launcher)81     public void onStateDisabled(Launcher launcher) {
82         super.onStateDisabled(launcher);
83         launcher.<RecentsView>getOverviewPanel().getQuickScrubController().cancelActiveQuickscrub();
84     }
85 }
86