mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-04 09:56:49 +00:00
- Override our insets in LauncherRootView to explicitly only care about nav bar size, ignoring any insets due to taskbar. - Previously we used nonOverlappingTaskbarInsets to belatedly subtract from measurements in e.g. DeviceProfile, but now we can revert most of those calculations since we effectively subtract taskbar insets at the root. Test: visual in different orientations and navigation modes, and testPressHomeOnAllAppsContextMenu to ensure REQUEST_WINDOW_INSETS still works for automated tests Fixes: 200607741 Change-Id: I8de5a268c686a1354b4beaa30e101bab6bed5af9
99 lines
3.4 KiB
Java
99 lines
3.4 KiB
Java
/*
|
|
* Copyright (C) 2017 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.states;
|
|
|
|
import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME;
|
|
|
|
import android.content.Context;
|
|
import android.graphics.Rect;
|
|
|
|
import com.android.launcher3.DeviceProfile;
|
|
import com.android.launcher3.Launcher;
|
|
import com.android.launcher3.LauncherState;
|
|
import com.android.launcher3.Workspace;
|
|
|
|
/**
|
|
* Definition for spring loaded state used during drag and drop.
|
|
*/
|
|
public class SpringLoadedState extends LauncherState {
|
|
|
|
private static final int STATE_FLAGS = FLAG_MULTI_PAGE
|
|
| FLAG_WORKSPACE_INACCESSIBLE | FLAG_DISABLE_RESTORE
|
|
| FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED | FLAG_WORKSPACE_HAS_BACKGROUNDS
|
|
| FLAG_HIDE_BACK_BUTTON;
|
|
|
|
public SpringLoadedState(int id) {
|
|
super(id, LAUNCHER_STATE_HOME, STATE_FLAGS);
|
|
}
|
|
|
|
@Override
|
|
public int getTransitionDuration(Context context) {
|
|
return 150;
|
|
}
|
|
|
|
@Override
|
|
public ScaleAndTranslation getWorkspaceScaleAndTranslation(Launcher launcher) {
|
|
DeviceProfile grid = launcher.getDeviceProfile();
|
|
Workspace ws = launcher.getWorkspace();
|
|
if (ws.getChildCount() == 0) {
|
|
return super.getWorkspaceScaleAndTranslation(launcher);
|
|
}
|
|
|
|
if (grid.isVerticalBarLayout()) {
|
|
float scale = grid.workspaceSpringLoadShrinkFactor;
|
|
return new ScaleAndTranslation(scale, 0, 0);
|
|
}
|
|
|
|
float scale = grid.workspaceSpringLoadShrinkFactor;
|
|
Rect insets = launcher.getDragLayer().getInsets();
|
|
|
|
float scaledHeight = scale * ws.getNormalChildHeight();
|
|
float shrunkTop = insets.top + grid.dropTargetBarSizePx;
|
|
float shrunkBottom = ws.getMeasuredHeight() - insets.bottom
|
|
- grid.workspacePadding.bottom
|
|
- grid.workspaceSpringLoadedBottomSpace;
|
|
float totalShrunkSpace = shrunkBottom - shrunkTop;
|
|
|
|
float desiredCellTop = shrunkTop + (totalShrunkSpace - scaledHeight) / 2;
|
|
|
|
float halfHeight = ws.getHeight() / 2;
|
|
float myCenter = ws.getTop() + halfHeight;
|
|
float cellTopFromCenter = halfHeight - ws.getChildAt(0).getTop();
|
|
float actualCellTop = myCenter - cellTopFromCenter * scale;
|
|
return new ScaleAndTranslation(scale, 0, (desiredCellTop - actualCellTop) / scale);
|
|
}
|
|
|
|
@Override
|
|
protected float getDepthUnchecked(Context context) {
|
|
return 0.5f;
|
|
}
|
|
|
|
@Override
|
|
public ScaleAndTranslation getHotseatScaleAndTranslation(Launcher launcher) {
|
|
return new ScaleAndTranslation(1, 0, 0);
|
|
}
|
|
|
|
@Override
|
|
public float getWorkspaceBackgroundAlpha(Launcher launcher) {
|
|
return 0.2f;
|
|
}
|
|
|
|
@Override
|
|
public int getVisibleElements(Launcher launcher) {
|
|
return (super.getVisibleElements(launcher) | HOTSEAT_ICONS) & ~TASKBAR;
|
|
}
|
|
}
|