Loading res/values/attrs.xml +12 −0 Original line number Original line Diff line number Diff line Loading @@ -342,6 +342,18 @@ <attr name="horizontalMarginTwoPanelLandscape" format="float"/> <attr name="horizontalMarginTwoPanelLandscape" format="float"/> <!-- defaults to horizontalMargin if not specified --> <!-- defaults to horizontalMargin if not specified --> <attr name="horizontalMarginTwoPanelPortrait" format="float"/> <attr name="horizontalMarginTwoPanelPortrait" format="float"/> <!-- By default all are false --> <attr name="inlineQsb" format="integer" > <!-- Enable on landscape only --> <flag name="portrait" value="1" /> <!-- Enable on portrait only --> <flag name="landscape" value="2" /> <!-- Enable on two panel portrait only --> <flag name="twoPanelPortrait" value="4" /> <!-- Enable on two panel landscape only --> <flag name="twoPanelLandscape" value="8" /> </attr> </declare-styleable> </declare-styleable> <declare-styleable name="CellLayout"> <declare-styleable name="CellLayout"> Loading src/com/android/launcher3/DeviceProfile.java +18 −14 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.launcher3; package com.android.launcher3; import static com.android.launcher3.InvariantDeviceProfile.INDEX_DEFAULT; import static com.android.launcher3.InvariantDeviceProfile.INDEX_LANDSCAPE; import static com.android.launcher3.InvariantDeviceProfile.INDEX_TWO_PANEL_LANDSCAPE; import static com.android.launcher3.InvariantDeviceProfile.INDEX_TWO_PANEL_PORTRAIT; import static com.android.launcher3.ResourceUtils.pxFromDp; import static com.android.launcher3.ResourceUtils.pxFromDp; import static com.android.launcher3.Utilities.dpiFromPx; import static com.android.launcher3.Utilities.dpiFromPx; import static com.android.launcher3.Utilities.pxFromSp; import static com.android.launcher3.Utilities.pxFromSp; Loading Loading @@ -58,7 +62,6 @@ public class DeviceProfile { // Device properties // Device properties public final boolean isTablet; public final boolean isTablet; public final boolean isLargeTablet; public final boolean isPhone; public final boolean isPhone; public final boolean transposeLayoutWithOrientation; public final boolean transposeLayoutWithOrientation; public final boolean isTwoPanels; public final boolean isTwoPanels; Loading Loading @@ -253,7 +256,6 @@ public class DeviceProfile { // Determine device posture. // Determine device posture. mInfo = info; mInfo = info; isTablet = info.isTablet(windowBounds); isTablet = info.isTablet(windowBounds); isLargeTablet = info.isLargeTablet(windowBounds); isPhone = !isTablet; isPhone = !isTablet; isTwoPanels = isTablet && useTwoPanels; isTwoPanels = isTablet && useTwoPanels; isTaskbarPresent = isTablet && ApiWrapper.TASKBAR_DRAWN_IN_PROCESS; isTaskbarPresent = isTablet && ApiWrapper.TASKBAR_DRAWN_IN_PROCESS; Loading @@ -278,15 +280,15 @@ public class DeviceProfile { if (isTwoPanels) { if (isTwoPanels) { if (isLandscape) { if (isLandscape) { mTypeIndex = InvariantDeviceProfile.INDEX_TWO_PANEL_LANDSCAPE; mTypeIndex = INDEX_TWO_PANEL_LANDSCAPE; } else { } else { mTypeIndex = InvariantDeviceProfile.INDEX_TWO_PANEL_PORTRAIT; mTypeIndex = INDEX_TWO_PANEL_PORTRAIT; } } } else { } else { if (isLandscape) { if (isLandscape) { mTypeIndex = InvariantDeviceProfile.INDEX_LANDSCAPE; mTypeIndex = INDEX_LANDSCAPE; } else { } else { mTypeIndex = InvariantDeviceProfile.INDEX_DEFAULT; mTypeIndex = INDEX_DEFAULT; } } } } Loading Loading @@ -348,9 +350,12 @@ public class DeviceProfile { workspaceCellPaddingXPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_padding_x); workspaceCellPaddingXPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_padding_x); hotseatQsbHeight = res.getDimensionPixelSize(R.dimen.qsb_widget_height); hotseatQsbHeight = res.getDimensionPixelSize(R.dimen.qsb_widget_height); // Whether QSB might be inline in appropriate orientation (landscape). // Whether QSB might be inline in appropriate orientation (e.g. landscape). boolean canQsbInline = isLargeTablet && hotseatQsbHeight > 0; boolean canQsbInline = (isTwoPanels ? inv.inlineQsb[INDEX_TWO_PANEL_PORTRAIT] isQsbInline = canQsbInline && isLandscape; || inv.inlineQsb[INDEX_TWO_PANEL_LANDSCAPE] : inv.inlineQsb[INDEX_DEFAULT] || inv.inlineQsb[INDEX_LANDSCAPE]) && hotseatQsbHeight > 0; isQsbInline = inv.inlineQsb[mTypeIndex] && canQsbInline; // We shrink hotseat sizes regardless of orientation, if nav buttons are inline and QSB // We shrink hotseat sizes regardless of orientation, if nav buttons are inline and QSB // might be inline in either orientations, to keep hotseat size consistent across rotation. // might be inline in either orientations, to keep hotseat size consistent across rotation. Loading Loading @@ -388,7 +393,7 @@ public class DeviceProfile { res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_extra_vertical_size); res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_extra_vertical_size); hotseatBorderSpace = pxFromDp(inv.hotseatBorderSpaces[mTypeIndex], mMetrics); hotseatBorderSpace = pxFromDp(inv.hotseatBorderSpaces[mTypeIndex], mMetrics); updateHotseatIconSize( updateHotseatIconSize( pxFromDp(inv.iconSize[InvariantDeviceProfile.INDEX_DEFAULT], mMetrics)); pxFromDp(inv.iconSize[INDEX_DEFAULT], mMetrics)); qsbBottomMarginOriginalPx = isScalableGrid qsbBottomMarginOriginalPx = isScalableGrid ? res.getDimensionPixelSize(R.dimen.scalable_grid_qsb_bottom_margin) ? res.getDimensionPixelSize(R.dimen.scalable_grid_qsb_bottom_margin) Loading Loading @@ -819,11 +824,11 @@ public class DeviceProfile { private void updateFolderCellSize(float scale, Resources res) { private void updateFolderCellSize(float scale, Resources res) { float invIconSizeDp = isVerticalBarLayout() float invIconSizeDp = isVerticalBarLayout() ? inv.iconSize[InvariantDeviceProfile.INDEX_LANDSCAPE] ? inv.iconSize[INDEX_LANDSCAPE] : inv.iconSize[InvariantDeviceProfile.INDEX_DEFAULT]; : inv.iconSize[INDEX_DEFAULT]; folderChildIconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, scale)); folderChildIconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, scale)); folderChildTextSizePx = folderChildTextSizePx = pxFromSp(inv.iconTextSize[InvariantDeviceProfile.INDEX_DEFAULT], mMetrics, scale); pxFromSp(inv.iconTextSize[INDEX_DEFAULT], mMetrics, scale); folderLabelTextSizePx = (int) (folderChildTextSizePx * folderLabelTextScale); folderLabelTextSizePx = (int) (folderChildTextSizePx * folderLabelTextScale); int textHeight = Utilities.calculateTextHeight(folderChildTextSizePx); int textHeight = Utilities.calculateTextHeight(folderChildTextSizePx); Loading Loading @@ -1174,7 +1179,6 @@ public class DeviceProfile { writer.println(prefix + "\t1 dp = " + mMetrics.density + " px"); writer.println(prefix + "\t1 dp = " + mMetrics.density + " px"); writer.println(prefix + "\tisTablet:" + isTablet); writer.println(prefix + "\tisTablet:" + isTablet); writer.println(prefix + "\tisLargeTablet:" + isLargeTablet); writer.println(prefix + "\tisPhone:" + isPhone); writer.println(prefix + "\tisPhone:" + isPhone); writer.println(prefix + "\ttransposeLayoutWithOrientation:" writer.println(prefix + "\ttransposeLayoutWithOrientation:" + transposeLayoutWithOrientation); + transposeLayoutWithOrientation); Loading src/com/android/launcher3/InvariantDeviceProfile.java +26 −0 Original line number Original line Diff line number Diff line Loading @@ -167,6 +167,7 @@ public class InvariantDeviceProfile { public String dbFile; public String dbFile; public int defaultLayoutId; public int defaultLayoutId; int demoModeLayoutId; int demoModeLayoutId; boolean[] inlineQsb = new boolean[COUNT_SIZES]; /** /** * An immutable list of supported profiles. * An immutable list of supported profiles. Loading Loading @@ -250,6 +251,8 @@ public class InvariantDeviceProfile { COUNT_SIZES); COUNT_SIZES); System.arraycopy(defaultDisplayOption.borderSpaces, 0, result.borderSpaces, 0, System.arraycopy(defaultDisplayOption.borderSpaces, 0, result.borderSpaces, 0, COUNT_SIZES); COUNT_SIZES); System.arraycopy(defaultDisplayOption.inlineQsb, 0, result.inlineQsb, 0, COUNT_SIZES); initGrid(context, myInfo, result, deviceType); initGrid(context, myInfo, result, deviceType); } } Loading Loading @@ -371,6 +374,8 @@ public class InvariantDeviceProfile { devicePaddings = new DevicePaddings(context, devicePaddingId); devicePaddings = new DevicePaddings(context, devicePaddingId); } } inlineQsb = displayOption.inlineQsb; // If the partner customization apk contains any grid overrides, apply them // If the partner customization apk contains any grid overrides, apply them // Supported overrides: numRows, numColumns, iconSize // Supported overrides: numRows, numColumns, iconSize applyPartnerDeviceProfileOverrides(context, metrics); applyPartnerDeviceProfileOverrides(context, metrics); Loading Loading @@ -783,12 +788,18 @@ public class InvariantDeviceProfile { @VisibleForTesting @VisibleForTesting static final class DisplayOption { static final class DisplayOption { private static final int INLINE_QSB_FOR_PORTRAIT = 1 << 0; private static final int INLINE_QSB_FOR_LANDSCAPE = 1 << 1; private static final int INLINE_QSB_FOR_TWO_PANEL_PORTRAIT = 1 << 2; private static final int INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE = 1 << 3; private static final int DONT_INLINE_QSB = 0; public final GridOption grid; public final GridOption grid; private final float minWidthDps; private final float minWidthDps; private final float minHeightDps; private final float minHeightDps; private final boolean canBeDefault; private final boolean canBeDefault; private final boolean[] inlineQsb = new boolean[COUNT_SIZES]; private final PointF[] minCellSize = new PointF[COUNT_SIZES]; private final PointF[] minCellSize = new PointF[COUNT_SIZES]; Loading @@ -815,6 +826,19 @@ public class InvariantDeviceProfile { canBeDefault = a.getBoolean(R.styleable.ProfileDisplayOption_canBeDefault, false); canBeDefault = a.getBoolean(R.styleable.ProfileDisplayOption_canBeDefault, false); int inlineForRotation = a.getInt(R.styleable.ProfileDisplayOption_inlineQsb, DONT_INLINE_QSB); inlineQsb[INDEX_DEFAULT] = (inlineForRotation & INLINE_QSB_FOR_PORTRAIT) == INLINE_QSB_FOR_PORTRAIT; inlineQsb[INDEX_LANDSCAPE] = (inlineForRotation & INLINE_QSB_FOR_LANDSCAPE) == INLINE_QSB_FOR_LANDSCAPE; inlineQsb[INDEX_TWO_PANEL_PORTRAIT] = (inlineForRotation & INLINE_QSB_FOR_TWO_PANEL_PORTRAIT) == INLINE_QSB_FOR_TWO_PANEL_PORTRAIT; inlineQsb[INDEX_TWO_PANEL_LANDSCAPE] = (inlineForRotation & INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE) == INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE; float x; float x; float y; float y; Loading Loading @@ -1029,6 +1053,7 @@ public class InvariantDeviceProfile { allAppsIconSizes[i] = 0; allAppsIconSizes[i] = 0; allAppsIconTextSizes[i] = 0; allAppsIconTextSizes[i] = 0; allAppsBorderSpaces[i] = new PointF(); allAppsBorderSpaces[i] = new PointF(); inlineQsb[i] = false; } } } } Loading Loading @@ -1071,6 +1096,7 @@ public class InvariantDeviceProfile { allAppsIconTextSizes[i] += p.allAppsIconTextSizes[i]; allAppsIconTextSizes[i] += p.allAppsIconTextSizes[i]; allAppsBorderSpaces[i].x += p.allAppsBorderSpaces[i].x; allAppsBorderSpaces[i].x += p.allAppsBorderSpaces[i].x; allAppsBorderSpaces[i].y += p.allAppsBorderSpaces[i].y; allAppsBorderSpaces[i].y += p.allAppsBorderSpaces[i].y; inlineQsb[i] |= p.inlineQsb[i]; } } folderBorderSpace += p.folderBorderSpace; folderBorderSpace += p.folderBorderSpace; Loading src/com/android/launcher3/util/DisplayController.java +0 −8 Original line number Original line Diff line number Diff line Loading @@ -26,7 +26,6 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_GESTURE_BUTTON; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_GESTURE_BUTTON; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.launcher3.util.PackageManagerHelper.getPackageFilter; import static com.android.launcher3.util.PackageManagerHelper.getPackageFilter; import static com.android.launcher3.util.window.WindowManagerProxy.MIN_LARGE_TABLET_WIDTH; import static com.android.launcher3.util.window.WindowManagerProxy.MIN_TABLET_WIDTH; import static com.android.launcher3.util.window.WindowManagerProxy.MIN_TABLET_WIDTH; import android.annotation.SuppressLint; import android.annotation.SuppressLint; Loading Loading @@ -348,13 +347,6 @@ public class DisplayController implements ComponentCallbacks, SafeCloseable { return smallestSizeDp(bounds) >= MIN_TABLET_WIDTH; return smallestSizeDp(bounds) >= MIN_TABLET_WIDTH; } } /** * Returns {@code true} if the bounds represent a large tablet. */ public boolean isLargeTablet(WindowBounds bounds) { return smallestSizeDp(bounds) >= MIN_LARGE_TABLET_WIDTH; } /** /** * Returns smallest size in dp for given bounds. * Returns smallest size in dp for given bounds. */ */ Loading src/com/android/launcher3/util/window/WindowManagerProxy.java +0 −1 Original line number Original line Diff line number Diff line Loading @@ -58,7 +58,6 @@ import com.android.launcher3.util.WindowBounds; public class WindowManagerProxy implements ResourceBasedOverride { public class WindowManagerProxy implements ResourceBasedOverride { public static final int MIN_TABLET_WIDTH = 600; public static final int MIN_TABLET_WIDTH = 600; public static final int MIN_LARGE_TABLET_WIDTH = 720; public static final MainThreadInitializedObject<WindowManagerProxy> INSTANCE = public static final MainThreadInitializedObject<WindowManagerProxy> INSTANCE = forOverride(WindowManagerProxy.class, R.string.window_manager_proxy_class); forOverride(WindowManagerProxy.class, R.string.window_manager_proxy_class); Loading Loading
res/values/attrs.xml +12 −0 Original line number Original line Diff line number Diff line Loading @@ -342,6 +342,18 @@ <attr name="horizontalMarginTwoPanelLandscape" format="float"/> <attr name="horizontalMarginTwoPanelLandscape" format="float"/> <!-- defaults to horizontalMargin if not specified --> <!-- defaults to horizontalMargin if not specified --> <attr name="horizontalMarginTwoPanelPortrait" format="float"/> <attr name="horizontalMarginTwoPanelPortrait" format="float"/> <!-- By default all are false --> <attr name="inlineQsb" format="integer" > <!-- Enable on landscape only --> <flag name="portrait" value="1" /> <!-- Enable on portrait only --> <flag name="landscape" value="2" /> <!-- Enable on two panel portrait only --> <flag name="twoPanelPortrait" value="4" /> <!-- Enable on two panel landscape only --> <flag name="twoPanelLandscape" value="8" /> </attr> </declare-styleable> </declare-styleable> <declare-styleable name="CellLayout"> <declare-styleable name="CellLayout"> Loading
src/com/android/launcher3/DeviceProfile.java +18 −14 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.launcher3; package com.android.launcher3; import static com.android.launcher3.InvariantDeviceProfile.INDEX_DEFAULT; import static com.android.launcher3.InvariantDeviceProfile.INDEX_LANDSCAPE; import static com.android.launcher3.InvariantDeviceProfile.INDEX_TWO_PANEL_LANDSCAPE; import static com.android.launcher3.InvariantDeviceProfile.INDEX_TWO_PANEL_PORTRAIT; import static com.android.launcher3.ResourceUtils.pxFromDp; import static com.android.launcher3.ResourceUtils.pxFromDp; import static com.android.launcher3.Utilities.dpiFromPx; import static com.android.launcher3.Utilities.dpiFromPx; import static com.android.launcher3.Utilities.pxFromSp; import static com.android.launcher3.Utilities.pxFromSp; Loading Loading @@ -58,7 +62,6 @@ public class DeviceProfile { // Device properties // Device properties public final boolean isTablet; public final boolean isTablet; public final boolean isLargeTablet; public final boolean isPhone; public final boolean isPhone; public final boolean transposeLayoutWithOrientation; public final boolean transposeLayoutWithOrientation; public final boolean isTwoPanels; public final boolean isTwoPanels; Loading Loading @@ -253,7 +256,6 @@ public class DeviceProfile { // Determine device posture. // Determine device posture. mInfo = info; mInfo = info; isTablet = info.isTablet(windowBounds); isTablet = info.isTablet(windowBounds); isLargeTablet = info.isLargeTablet(windowBounds); isPhone = !isTablet; isPhone = !isTablet; isTwoPanels = isTablet && useTwoPanels; isTwoPanels = isTablet && useTwoPanels; isTaskbarPresent = isTablet && ApiWrapper.TASKBAR_DRAWN_IN_PROCESS; isTaskbarPresent = isTablet && ApiWrapper.TASKBAR_DRAWN_IN_PROCESS; Loading @@ -278,15 +280,15 @@ public class DeviceProfile { if (isTwoPanels) { if (isTwoPanels) { if (isLandscape) { if (isLandscape) { mTypeIndex = InvariantDeviceProfile.INDEX_TWO_PANEL_LANDSCAPE; mTypeIndex = INDEX_TWO_PANEL_LANDSCAPE; } else { } else { mTypeIndex = InvariantDeviceProfile.INDEX_TWO_PANEL_PORTRAIT; mTypeIndex = INDEX_TWO_PANEL_PORTRAIT; } } } else { } else { if (isLandscape) { if (isLandscape) { mTypeIndex = InvariantDeviceProfile.INDEX_LANDSCAPE; mTypeIndex = INDEX_LANDSCAPE; } else { } else { mTypeIndex = InvariantDeviceProfile.INDEX_DEFAULT; mTypeIndex = INDEX_DEFAULT; } } } } Loading Loading @@ -348,9 +350,12 @@ public class DeviceProfile { workspaceCellPaddingXPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_padding_x); workspaceCellPaddingXPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_padding_x); hotseatQsbHeight = res.getDimensionPixelSize(R.dimen.qsb_widget_height); hotseatQsbHeight = res.getDimensionPixelSize(R.dimen.qsb_widget_height); // Whether QSB might be inline in appropriate orientation (landscape). // Whether QSB might be inline in appropriate orientation (e.g. landscape). boolean canQsbInline = isLargeTablet && hotseatQsbHeight > 0; boolean canQsbInline = (isTwoPanels ? inv.inlineQsb[INDEX_TWO_PANEL_PORTRAIT] isQsbInline = canQsbInline && isLandscape; || inv.inlineQsb[INDEX_TWO_PANEL_LANDSCAPE] : inv.inlineQsb[INDEX_DEFAULT] || inv.inlineQsb[INDEX_LANDSCAPE]) && hotseatQsbHeight > 0; isQsbInline = inv.inlineQsb[mTypeIndex] && canQsbInline; // We shrink hotseat sizes regardless of orientation, if nav buttons are inline and QSB // We shrink hotseat sizes regardless of orientation, if nav buttons are inline and QSB // might be inline in either orientations, to keep hotseat size consistent across rotation. // might be inline in either orientations, to keep hotseat size consistent across rotation. Loading Loading @@ -388,7 +393,7 @@ public class DeviceProfile { res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_extra_vertical_size); res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_extra_vertical_size); hotseatBorderSpace = pxFromDp(inv.hotseatBorderSpaces[mTypeIndex], mMetrics); hotseatBorderSpace = pxFromDp(inv.hotseatBorderSpaces[mTypeIndex], mMetrics); updateHotseatIconSize( updateHotseatIconSize( pxFromDp(inv.iconSize[InvariantDeviceProfile.INDEX_DEFAULT], mMetrics)); pxFromDp(inv.iconSize[INDEX_DEFAULT], mMetrics)); qsbBottomMarginOriginalPx = isScalableGrid qsbBottomMarginOriginalPx = isScalableGrid ? res.getDimensionPixelSize(R.dimen.scalable_grid_qsb_bottom_margin) ? res.getDimensionPixelSize(R.dimen.scalable_grid_qsb_bottom_margin) Loading Loading @@ -819,11 +824,11 @@ public class DeviceProfile { private void updateFolderCellSize(float scale, Resources res) { private void updateFolderCellSize(float scale, Resources res) { float invIconSizeDp = isVerticalBarLayout() float invIconSizeDp = isVerticalBarLayout() ? inv.iconSize[InvariantDeviceProfile.INDEX_LANDSCAPE] ? inv.iconSize[INDEX_LANDSCAPE] : inv.iconSize[InvariantDeviceProfile.INDEX_DEFAULT]; : inv.iconSize[INDEX_DEFAULT]; folderChildIconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, scale)); folderChildIconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, scale)); folderChildTextSizePx = folderChildTextSizePx = pxFromSp(inv.iconTextSize[InvariantDeviceProfile.INDEX_DEFAULT], mMetrics, scale); pxFromSp(inv.iconTextSize[INDEX_DEFAULT], mMetrics, scale); folderLabelTextSizePx = (int) (folderChildTextSizePx * folderLabelTextScale); folderLabelTextSizePx = (int) (folderChildTextSizePx * folderLabelTextScale); int textHeight = Utilities.calculateTextHeight(folderChildTextSizePx); int textHeight = Utilities.calculateTextHeight(folderChildTextSizePx); Loading Loading @@ -1174,7 +1179,6 @@ public class DeviceProfile { writer.println(prefix + "\t1 dp = " + mMetrics.density + " px"); writer.println(prefix + "\t1 dp = " + mMetrics.density + " px"); writer.println(prefix + "\tisTablet:" + isTablet); writer.println(prefix + "\tisTablet:" + isTablet); writer.println(prefix + "\tisLargeTablet:" + isLargeTablet); writer.println(prefix + "\tisPhone:" + isPhone); writer.println(prefix + "\tisPhone:" + isPhone); writer.println(prefix + "\ttransposeLayoutWithOrientation:" writer.println(prefix + "\ttransposeLayoutWithOrientation:" + transposeLayoutWithOrientation); + transposeLayoutWithOrientation); Loading
src/com/android/launcher3/InvariantDeviceProfile.java +26 −0 Original line number Original line Diff line number Diff line Loading @@ -167,6 +167,7 @@ public class InvariantDeviceProfile { public String dbFile; public String dbFile; public int defaultLayoutId; public int defaultLayoutId; int demoModeLayoutId; int demoModeLayoutId; boolean[] inlineQsb = new boolean[COUNT_SIZES]; /** /** * An immutable list of supported profiles. * An immutable list of supported profiles. Loading Loading @@ -250,6 +251,8 @@ public class InvariantDeviceProfile { COUNT_SIZES); COUNT_SIZES); System.arraycopy(defaultDisplayOption.borderSpaces, 0, result.borderSpaces, 0, System.arraycopy(defaultDisplayOption.borderSpaces, 0, result.borderSpaces, 0, COUNT_SIZES); COUNT_SIZES); System.arraycopy(defaultDisplayOption.inlineQsb, 0, result.inlineQsb, 0, COUNT_SIZES); initGrid(context, myInfo, result, deviceType); initGrid(context, myInfo, result, deviceType); } } Loading Loading @@ -371,6 +374,8 @@ public class InvariantDeviceProfile { devicePaddings = new DevicePaddings(context, devicePaddingId); devicePaddings = new DevicePaddings(context, devicePaddingId); } } inlineQsb = displayOption.inlineQsb; // If the partner customization apk contains any grid overrides, apply them // If the partner customization apk contains any grid overrides, apply them // Supported overrides: numRows, numColumns, iconSize // Supported overrides: numRows, numColumns, iconSize applyPartnerDeviceProfileOverrides(context, metrics); applyPartnerDeviceProfileOverrides(context, metrics); Loading Loading @@ -783,12 +788,18 @@ public class InvariantDeviceProfile { @VisibleForTesting @VisibleForTesting static final class DisplayOption { static final class DisplayOption { private static final int INLINE_QSB_FOR_PORTRAIT = 1 << 0; private static final int INLINE_QSB_FOR_LANDSCAPE = 1 << 1; private static final int INLINE_QSB_FOR_TWO_PANEL_PORTRAIT = 1 << 2; private static final int INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE = 1 << 3; private static final int DONT_INLINE_QSB = 0; public final GridOption grid; public final GridOption grid; private final float minWidthDps; private final float minWidthDps; private final float minHeightDps; private final float minHeightDps; private final boolean canBeDefault; private final boolean canBeDefault; private final boolean[] inlineQsb = new boolean[COUNT_SIZES]; private final PointF[] minCellSize = new PointF[COUNT_SIZES]; private final PointF[] minCellSize = new PointF[COUNT_SIZES]; Loading @@ -815,6 +826,19 @@ public class InvariantDeviceProfile { canBeDefault = a.getBoolean(R.styleable.ProfileDisplayOption_canBeDefault, false); canBeDefault = a.getBoolean(R.styleable.ProfileDisplayOption_canBeDefault, false); int inlineForRotation = a.getInt(R.styleable.ProfileDisplayOption_inlineQsb, DONT_INLINE_QSB); inlineQsb[INDEX_DEFAULT] = (inlineForRotation & INLINE_QSB_FOR_PORTRAIT) == INLINE_QSB_FOR_PORTRAIT; inlineQsb[INDEX_LANDSCAPE] = (inlineForRotation & INLINE_QSB_FOR_LANDSCAPE) == INLINE_QSB_FOR_LANDSCAPE; inlineQsb[INDEX_TWO_PANEL_PORTRAIT] = (inlineForRotation & INLINE_QSB_FOR_TWO_PANEL_PORTRAIT) == INLINE_QSB_FOR_TWO_PANEL_PORTRAIT; inlineQsb[INDEX_TWO_PANEL_LANDSCAPE] = (inlineForRotation & INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE) == INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE; float x; float x; float y; float y; Loading Loading @@ -1029,6 +1053,7 @@ public class InvariantDeviceProfile { allAppsIconSizes[i] = 0; allAppsIconSizes[i] = 0; allAppsIconTextSizes[i] = 0; allAppsIconTextSizes[i] = 0; allAppsBorderSpaces[i] = new PointF(); allAppsBorderSpaces[i] = new PointF(); inlineQsb[i] = false; } } } } Loading Loading @@ -1071,6 +1096,7 @@ public class InvariantDeviceProfile { allAppsIconTextSizes[i] += p.allAppsIconTextSizes[i]; allAppsIconTextSizes[i] += p.allAppsIconTextSizes[i]; allAppsBorderSpaces[i].x += p.allAppsBorderSpaces[i].x; allAppsBorderSpaces[i].x += p.allAppsBorderSpaces[i].x; allAppsBorderSpaces[i].y += p.allAppsBorderSpaces[i].y; allAppsBorderSpaces[i].y += p.allAppsBorderSpaces[i].y; inlineQsb[i] |= p.inlineQsb[i]; } } folderBorderSpace += p.folderBorderSpace; folderBorderSpace += p.folderBorderSpace; Loading
src/com/android/launcher3/util/DisplayController.java +0 −8 Original line number Original line Diff line number Diff line Loading @@ -26,7 +26,6 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_GESTURE_BUTTON; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_GESTURE_BUTTON; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.launcher3.util.PackageManagerHelper.getPackageFilter; import static com.android.launcher3.util.PackageManagerHelper.getPackageFilter; import static com.android.launcher3.util.window.WindowManagerProxy.MIN_LARGE_TABLET_WIDTH; import static com.android.launcher3.util.window.WindowManagerProxy.MIN_TABLET_WIDTH; import static com.android.launcher3.util.window.WindowManagerProxy.MIN_TABLET_WIDTH; import android.annotation.SuppressLint; import android.annotation.SuppressLint; Loading Loading @@ -348,13 +347,6 @@ public class DisplayController implements ComponentCallbacks, SafeCloseable { return smallestSizeDp(bounds) >= MIN_TABLET_WIDTH; return smallestSizeDp(bounds) >= MIN_TABLET_WIDTH; } } /** * Returns {@code true} if the bounds represent a large tablet. */ public boolean isLargeTablet(WindowBounds bounds) { return smallestSizeDp(bounds) >= MIN_LARGE_TABLET_WIDTH; } /** /** * Returns smallest size in dp for given bounds. * Returns smallest size in dp for given bounds. */ */ Loading
src/com/android/launcher3/util/window/WindowManagerProxy.java +0 −1 Original line number Original line Diff line number Diff line Loading @@ -58,7 +58,6 @@ import com.android.launcher3.util.WindowBounds; public class WindowManagerProxy implements ResourceBasedOverride { public class WindowManagerProxy implements ResourceBasedOverride { public static final int MIN_TABLET_WIDTH = 600; public static final int MIN_TABLET_WIDTH = 600; public static final int MIN_LARGE_TABLET_WIDTH = 720; public static final MainThreadInitializedObject<WindowManagerProxy> INSTANCE = public static final MainThreadInitializedObject<WindowManagerProxy> INSTANCE = forOverride(WindowManagerProxy.class, R.string.window_manager_proxy_class); forOverride(WindowManagerProxy.class, R.string.window_manager_proxy_class); Loading