2018-01-19 18:45:38 -08:00
|
|
|
/*
|
|
|
|
|
* Copyright (C) 2018 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;
|
|
|
|
|
|
2018-05-23 17:07:33 -07:00
|
|
|
import android.content.Context;
|
|
|
|
|
import android.content.res.Resources;
|
|
|
|
|
import android.graphics.Rect;
|
|
|
|
|
|
2018-05-22 16:24:40 -07:00
|
|
|
import com.android.launcher3.DeviceProfile;
|
2018-03-05 19:39:25 +00:00
|
|
|
import com.android.launcher3.Launcher;
|
2018-05-23 17:07:33 -07:00
|
|
|
import com.android.launcher3.R;
|
2018-03-05 08:34:13 -08:00
|
|
|
import com.android.quickstep.QuickScrubController;
|
2018-03-13 09:57:05 -07:00
|
|
|
import com.android.quickstep.views.RecentsView;
|
2018-03-05 18:06:48 +00:00
|
|
|
|
2018-01-19 18:45:38 -08:00
|
|
|
/**
|
2018-03-05 19:39:25 +00:00
|
|
|
* Extension of overview state used for QuickScrub
|
2018-01-19 18:45:38 -08:00
|
|
|
*/
|
2018-03-05 19:39:25 +00:00
|
|
|
public class FastOverviewState extends OverviewState {
|
2018-03-05 18:06:48 +00:00
|
|
|
|
2018-05-23 17:07:33 -07:00
|
|
|
private static final float MAX_PREVIEW_SCALE_UP = 1.3f;
|
|
|
|
|
/**
|
|
|
|
|
* Vertical transition of the task previews relative to the full container.
|
|
|
|
|
*/
|
2018-05-30 13:13:37 -07:00
|
|
|
public static final float OVERVIEW_TRANSLATION_FACTOR = 0.4f;
|
2018-05-23 17:07:33 -07:00
|
|
|
|
2018-05-04 13:19:29 -07:00
|
|
|
private static final int STATE_FLAGS = FLAG_DISABLE_RESTORE | FLAG_DISABLE_INTERACTION
|
|
|
|
|
| FLAG_OVERVIEW_UI | FLAG_HIDE_BACK_BUTTON | FLAG_DISABLE_ACCESSIBILITY;
|
2018-03-05 18:06:48 +00:00
|
|
|
|
2018-03-05 19:39:25 +00:00
|
|
|
public FastOverviewState(int id) {
|
2018-05-04 12:10:55 -07:00
|
|
|
super(id, QuickScrubController.QUICK_SCRUB_FROM_HOME_START_DURATION, STATE_FLAGS);
|
2018-03-05 08:34:13 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onStateTransitionEnd(Launcher launcher) {
|
|
|
|
|
super.onStateTransitionEnd(launcher);
|
|
|
|
|
RecentsView recentsView = launcher.getOverviewPanel();
|
|
|
|
|
recentsView.getQuickScrubController().onFinishedTransitionToQuickScrub();
|
2018-03-05 18:06:48 +00:00
|
|
|
}
|
2018-01-19 18:45:38 -08:00
|
|
|
|
2018-03-05 18:06:48 +00:00
|
|
|
@Override
|
2018-03-14 17:51:49 -07:00
|
|
|
public int getVisibleElements(Launcher launcher) {
|
2018-03-15 12:48:51 +00:00
|
|
|
return NONE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2018-04-04 10:23:36 -07:00
|
|
|
public float[] getOverviewScaleAndTranslationYFactor(Launcher launcher) {
|
2018-05-23 17:07:33 -07:00
|
|
|
RecentsView recentsView = launcher.getOverviewPanel();
|
|
|
|
|
recentsView.getTaskSize(sTempRect);
|
|
|
|
|
|
|
|
|
|
return new float[] {getOverviewScale(launcher.getDeviceProfile(), sTempRect, launcher),
|
|
|
|
|
OVERVIEW_TRANSLATION_FACTOR};
|
2018-05-22 16:24:40 -07:00
|
|
|
}
|
|
|
|
|
|
2018-05-23 17:07:33 -07:00
|
|
|
public static float getOverviewScale(DeviceProfile dp, Rect taskRect, Context context) {
|
|
|
|
|
if (dp.isVerticalBarLayout()) {
|
2018-05-22 16:24:40 -07:00
|
|
|
return 1f;
|
|
|
|
|
}
|
|
|
|
|
|
2018-05-23 17:07:33 -07:00
|
|
|
Resources res = context.getResources();
|
|
|
|
|
float usedHeight = taskRect.height() + res.getDimension(R.dimen.task_thumbnail_top_margin);
|
|
|
|
|
float usedWidth = taskRect.width() + 2 * (res.getDimension(R.dimen.recents_page_spacing)
|
|
|
|
|
+ res.getDimension(R.dimen.quickscrub_adjacent_visible_width));
|
|
|
|
|
return Math.min(Math.min(dp.availableHeightPx / usedHeight,
|
|
|
|
|
dp.availableWidthPx / usedWidth), MAX_PREVIEW_SCALE_UP);
|
2018-01-19 18:45:38 -08:00
|
|
|
}
|
2018-05-24 12:16:38 -07:00
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onStateDisabled(Launcher launcher) {
|
|
|
|
|
super.onStateDisabled(launcher);
|
|
|
|
|
launcher.<RecentsView>getOverviewPanel().getQuickScrubController().cancelActiveQuickscrub();
|
|
|
|
|
}
|
2018-01-19 18:45:38 -08:00
|
|
|
}
|