diff --git a/quickstep/src/com/android/launcher3/appprediction/AppsDividerView.java b/quickstep/src/com/android/launcher3/appprediction/AppsDividerView.java index 63a569a65c..1b0f967a1f 100644 --- a/quickstep/src/com/android/launcher3/appprediction/AppsDividerView.java +++ b/quickstep/src/com/android/launcher3/appprediction/AppsDividerView.java @@ -282,8 +282,7 @@ public class AppsDividerView extends View implements StateListener + + diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index c7ae37384f..5bd3e14965 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -168,11 +168,13 @@ public class DeviceProfile { public int qsbBottomMarginPx; // All apps + public int allAppsCellSpacingPx; public int allAppsOpenVerticalTranslate; public int allAppsCellHeightPx; public int allAppsCellWidthPx; public int allAppsIconSizePx; public int allAppsIconDrawablePaddingPx; + public int allAppsLeftRightPadding; public final int numShownAllAppsColumns; public float allAppsIconTextSizePx; @@ -283,6 +285,7 @@ public class DeviceProfile { folderContentPaddingTop = res.getDimensionPixelSize(R.dimen.folder_content_padding_top); setCellLayoutBorderSpacing(pxFromDp(inv.borderSpacing, mMetrics, 1f)); + allAppsCellSpacingPx = pxFromDp(inv.allAppsCellSpacing, mMetrics, 1f); cellLayoutBorderSpacingOriginalPx = cellLayoutBorderSpacingPx; folderCellLayoutBorderSpacingPx = cellLayoutBorderSpacingPx; @@ -547,6 +550,17 @@ public class DeviceProfile { + textHeight + (topBottomPadding * 2); } + private void updateAllAppsWidth() { + if (isTwoPanels) { + int usedWidth = (allAppsCellWidthPx * numShownAllAppsColumns) + + (allAppsCellSpacingPx * (numShownAllAppsColumns + 1)); + allAppsLeftRightPadding = Math.max(1, (availableWidthPx - usedWidth) / 2); + } else { + allAppsLeftRightPadding = + desiredWorkspaceLeftRightMarginPx + cellLayoutPaddingLeftRightPx; + } + } + /** * Returns the amount of extra (or unused) vertical space. */ @@ -666,6 +680,7 @@ public class DeviceProfile { allAppsCellHeightPx = getCellSize().y; } allAppsCellWidthPx = allAppsIconSizePx + allAppsIconDrawablePaddingPx; + updateAllAppsWidth(); if (isVerticalLayout) { hideWorkspaceLabelsIfNotEnoughSpace(); diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java index 5f441d183d..86310407b1 100644 --- a/src/com/android/launcher3/InvariantDeviceProfile.java +++ b/src/com/android/launcher3/InvariantDeviceProfile.java @@ -108,6 +108,7 @@ public class InvariantDeviceProfile { public float iconTextSize; public float allAppsIconSize; public float allAppsIconTextSize; + public float allAppsCellSpacing; public boolean isSplitDisplay; public float minCellHeight; @@ -153,7 +154,8 @@ public class InvariantDeviceProfile { */ public List supportedProfiles = Collections.EMPTY_LIST; - @Nullable public DevicePaddings devicePaddings; + @Nullable + public DevicePaddings devicePaddings; public Point defaultWallpaperSize; public Rect defaultWidgetPadding; @@ -161,7 +163,8 @@ public class InvariantDeviceProfile { private final ArrayList mChangeListeners = new ArrayList<>(); @VisibleForTesting - public InvariantDeviceProfile() {} + public InvariantDeviceProfile() { + } @TargetApi(23) private InvariantDeviceProfile(Context context) { @@ -219,6 +222,7 @@ public class InvariantDeviceProfile { result.minCellHeight = defaultDisplayOption.minCellHeight; result.minCellWidth = defaultDisplayOption.minCellWidth; result.borderSpacing = defaultDisplayOption.borderSpacing; + result.allAppsCellSpacing = defaultDisplayOption.allAppsCellSpacing; initGrid(context, myInfo, result, false); } @@ -283,6 +287,7 @@ public class InvariantDeviceProfile { twoPanelLandscapeMinCellHeightDps = displayOption.twoPanelLandscapeMinCellHeightDps; twoPanelLandscapeMinCellWidthDps = displayOption.twoPanelLandscapeMinCellWidthDps; borderSpacing = displayOption.borderSpacing; + allAppsCellSpacing = displayOption.allAppsCellSpacing; numShownHotseatIcons = closestProfile.numHotseatIcons; numDatabaseHotseatIcons = isSplitDisplay @@ -356,7 +361,7 @@ public class InvariantDeviceProfile { } private Object[] toModelState() { - return new Object[] { + return new Object[]{ numColumns, numRows, numDatabaseHotseatIcons, iconBitmapSize, fillResIconDpi, numDatabaseAllAppsColumns, dbFile}; } @@ -402,7 +407,7 @@ public class InvariantDeviceProfile { } } } - } catch (IOException|XmlPullParserException e) { + } catch (IOException | XmlPullParserException e) { throw new RuntimeException(e); } @@ -456,7 +461,7 @@ public class InvariantDeviceProfile { private int getLauncherIconDensity(int requiredSize) { // Densities typically defined by an app. - int[] densityBuckets = new int[] { + int[] densityBuckets = new int[]{ DisplayMetrics.DENSITY_LOW, DisplayMetrics.DENSITY_MEDIUM, DisplayMetrics.DENSITY_TV, @@ -596,8 +601,8 @@ public class InvariantDeviceProfile { // We will use these two data points to extrapolate how much the wallpaper parallax effect // to span (ie travel) at any aspect ratio: - final float ASPECT_RATIO_LANDSCAPE = 16/10f; - final float ASPECT_RATIO_PORTRAIT = 10/16f; + final float ASPECT_RATIO_LANDSCAPE = 16 / 10f; + final float ASPECT_RATIO_PORTRAIT = 10 / 16f; final float WALLPAPER_WIDTH_TO_SCREEN_RATIO_LANDSCAPE = 1.5f; final float WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT = 1.2f; @@ -607,7 +612,8 @@ public class InvariantDeviceProfile { // (10/16)x + y = 1.2 // We solve for x and y and end up with a final formula: final float x = - (WALLPAPER_WIDTH_TO_SCREEN_RATIO_LANDSCAPE - WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT) / + (WALLPAPER_WIDTH_TO_SCREEN_RATIO_LANDSCAPE + - WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT) / (ASPECT_RATIO_LANDSCAPE - ASPECT_RATIO_PORTRAIT); final float y = WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT - x * ASPECT_RATIO_PORTRAIT; return x * aspectRatio + y; @@ -719,6 +725,7 @@ public class InvariantDeviceProfile { private float twoPanelPortraitMinCellWidthDps; private float twoPanelLandscapeMinCellHeightDps; private float twoPanelLandscapeMinCellWidthDps; + private float allAppsCellSpacing; private float borderSpacing; private final float[] iconSizes = new float[COUNT_TOTAL]; @@ -750,6 +757,8 @@ public class InvariantDeviceProfile { R.styleable.ProfileDisplayOption_twoPanelLandscapeMinCellWidthDps, twoPanelPortraitMinCellWidthDps); borderSpacing = a.getFloat(R.styleable.ProfileDisplayOption_borderSpacingDps, 0); + allAppsCellSpacing = a.getFloat(R.styleable.ProfileDisplayOption_allAppsCellSpacingDps, + borderSpacing); iconSizes[INDEX_DEFAULT] = a.getFloat(R.styleable.ProfileDisplayOption_iconImageSize, 0); @@ -810,6 +819,7 @@ public class InvariantDeviceProfile { twoPanelLandscapeMinCellHeightDps *= w; twoPanelLandscapeMinCellWidthDps *= w; borderSpacing *= w; + allAppsCellSpacing *= w; return this; } @@ -825,6 +835,7 @@ public class InvariantDeviceProfile { twoPanelLandscapeMinCellHeightDps += p.twoPanelLandscapeMinCellHeightDps; twoPanelLandscapeMinCellWidthDps += p.twoPanelLandscapeMinCellWidthDps; borderSpacing += p.borderSpacing; + allAppsCellSpacing += p.allAppsCellSpacing; return this; } } diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index 9a5fd0506e..3f1f915923 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -382,12 +382,10 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo public void setInsets(Rect insets) { mInsets.set(insets); DeviceProfile grid = mLauncher.getDeviceProfile(); - int leftRightPadding = grid.desiredWorkspaceLeftRightMarginPx - + grid.cellLayoutPaddingLeftRightPx; for (int i = 0; i < mAH.length; i++) { mAH[i].padding.bottom = insets.bottom; - mAH[i].padding.left = mAH[i].padding.right = leftRightPadding; + mAH[i].padding.left = mAH[i].padding.right = grid.allAppsLeftRightPadding; mAH[i].applyPadding(); }