Hide workspace text in multi-window mode.

* Vertically centers workspace icons.
* New iconDisplay value so shortcut text is not overriden.

Bug: 32176631

Change-Id: I86753bab5b24aafc417e0f77d8c471fc4c0dc7f0
This commit is contained in:
Jon Miranda
2016-11-11 14:13:04 -08:00
parent f8d5370a9f
commit 93e1f04fa9
6 changed files with 38 additions and 16 deletions

View File

@@ -27,6 +27,7 @@
<enum name="all_apps" value="1" />
<enum name="folder" value="2" />
<enum name="widget_section" value="3" />
<enum name="shortcut_popup" value="4" />
</attr>
<attr name="deferShadowGeneration" format="boolean" />
<attr name="customShadows" format="boolean" />

View File

@@ -108,6 +108,7 @@
<item name="android:shadowRadius">0</item>
<item name="customShadows">false</item>
<item name="layoutHorizontal">true</item>
<item name="iconDisplay">shortcut_popup</item>
<item name="iconSizeOverride">@dimen/deep_shortcut_icon_size</item>
</style>

View File

@@ -618,7 +618,9 @@ public class CellLayout extends ViewGroup implements BubbleTextShadowHandler {
public void setIsHotseat(boolean isHotseat) {
mIsHotseat = isHotseat;
mShortcutsAndWidgets.setIsHotseat(isHotseat);
mShortcutsAndWidgets.setContainerType(isHotseat
? ShortcutAndWidgetContainer.HOTSEAT
: ShortcutAndWidgetContainer.DEFAULT);
}
public boolean isHotseat() {

View File

@@ -207,7 +207,15 @@ public class DeviceProfile {
// In multi-window mode, we can have widthPx = availableWidthPx
// and heightPx = availableHeightPx because Launcher uses the InvariantDeviceProfiles'
// widthPx and heightPx values where it's needed.
return new DeviceProfile(context, inv, mwSize, mwSize, mwSize.x, mwSize.y, isLandscape);
DeviceProfile profile = new DeviceProfile(context, inv, mwSize, mwSize, mwSize.x, mwSize.y,
isLandscape);
// Hide labels on the workspace.
profile.iconTextSizePx = 0;
profile.cellHeightPx = profile.iconSizePx + profile.iconDrawablePaddingPx
+ Utilities.calculateTextHeight(profile.iconTextSizePx);
return profile;
}
public void addLauncherLayoutChangedListener(LauncherLayoutChangeListener listener) {

View File

@@ -18,13 +18,25 @@ package com.android.launcher3;
import android.app.WallpaperManager;
import android.content.Context;
import android.graphics.Paint;
import android.graphics.Rect;
import android.support.annotation.IntDef;
import android.view.View;
import android.view.ViewGroup;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
public class ShortcutAndWidgetContainer extends ViewGroup {
static final String TAG = "CellLayoutChildren";
static final String TAG = "ShortcutAndWidgetContainer";
@Retention(RetentionPolicy.SOURCE)
@IntDef({DEFAULT, HOTSEAT, FOLDER})
public @interface ContainerType{}
public static final int DEFAULT = 0;
public static final int HOTSEAT = 1;
public static final int FOLDER = 2;
private int mContainerType = DEFAULT;
// These are temporary variables to prevent having to allocate a new object just to
// return an (x, y) value from helper functions. Do NOT use them to maintain other state.
@@ -32,8 +44,6 @@ public class ShortcutAndWidgetContainer extends ViewGroup {
private final WallpaperManager mWallpaperManager;
private boolean mIsHotseatLayout;
private int mCellWidth;
private int mCellHeight;
@@ -101,20 +111,19 @@ public class ShortcutAndWidgetContainer extends ViewGroup {
mInvertIfRtl = invert;
}
public void setIsHotseat(boolean isHotseat) {
mIsHotseatLayout = isHotseat;
}
int getCellContentWidth() {
final DeviceProfile grid = mLauncher.getDeviceProfile();
return Math.min(getMeasuredHeight(), mIsHotseatLayout ?
grid.hotseatCellWidthPx: grid.cellWidthPx);
public void setContainerType(@ContainerType int containerType) {
mContainerType = containerType;
}
int getCellContentHeight() {
final DeviceProfile grid = mLauncher.getDeviceProfile();
return Math.min(getMeasuredHeight(), mIsHotseatLayout ?
grid.hotseatCellHeightPx : grid.cellHeightPx);
int cellContentHeight = grid.cellHeightPx;
if (mContainerType == HOTSEAT) {
cellContentHeight = grid.hotseatCellHeightPx;
} else if (mContainerType == FOLDER) {
cellContentHeight = grid.folderCellHeightPx;
}
return Math.min(getMeasuredHeight(), cellContentHeight);
}
public void measureChild(View child) {

View File

@@ -256,6 +256,7 @@ public class FolderPagedView extends PagedView {
CellLayout page = new CellLayout(getContext());
page.setCellDimensions(grid.folderCellWidthPx, grid.folderCellHeightPx);
page.getShortcutsAndWidgets().setMotionEventSplittingEnabled(false);
page.getShortcutsAndWidgets().setContainerType(ShortcutAndWidgetContainer.FOLDER);
page.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
page.setInvertIfRtl(true);
page.setGridSize(mGridCountX, mGridCountY);