Loading res/values-sw720dp/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ <resources> <!-- All Apps --> <dimen name="all_apps_button_scale_down">8dp</dimen> <dimen name="all_apps_search_bar_height">54dp</dimen> <dimen name="all_apps_icon_top_bottom_padding">14dp</dimen> <dimen name="all_apps_empty_search_message_top_offset">64dp</dimen> Loading res/values/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ <dimen name="container_fastscroll_popup_text_size">48dp</dimen> <!-- All Apps --> <dimen name="all_apps_button_scale_down">0dp</dimen> <dimen name="all_apps_grid_view_start_margin">0dp</dimen> <dimen name="all_apps_grid_section_y_offset">8dp</dimen> <dimen name="all_apps_grid_section_text_size">24sp</dimen> Loading src/com/android/launcher3/DeviceProfile.java +29 −11 Original line number Diff line number Diff line Loading @@ -49,6 +49,12 @@ public class DeviceProfile { public final int heightPx; public final int availableWidthPx; public final int availableHeightPx; /** * The maximum amount of left/right workspace padding as a percentage of the screen width. * To be clear, this means that up to 7% of the screen width can be used as left padding, and * 7% of the screen width can be used as right padding. */ private static final float MAX_HORIZONTAL_PADDING_PERCENT = 0.14f; // Overview mode private final int overviewModeMinIconZoneHeightPx; Loading Loading @@ -167,7 +173,8 @@ public class DeviceProfile { private void computeAllAppsButtonSize(Context context) { Resources res = context.getResources(); float padding = res.getInteger(R.integer.config_allAppsButtonPaddingPercent) / 100f; allAppsButtonVisualSize = (int) (hotseatIconSizePx * (1 - padding)); allAppsButtonVisualSize = (int) (hotseatIconSizePx * (1 - padding)) - context.getResources() .getDimensionPixelSize(R.dimen.all_apps_button_scale_down); } private void updateAvailableDimensions(DisplayMetrics dm, Resources res) { Loading Loading @@ -314,12 +321,15 @@ public class DeviceProfile { int height = getCurrentHeight(); int paddingTop = searchBarBounds.bottom; int paddingBottom = hotseatBarHeightPx + pageIndicatorHeightPx; int availableWidth = Math.max(0, width - (int) ((inv.numColumns * cellWidthPx) + (inv.numColumns * gapScale * cellWidthPx))); int availableHeight = Math.max(0, height - paddingTop - paddingBottom // The amount of screen space available for left/right padding. int availablePaddingX = Math.max(0, width - (int) ((inv.numColumns * cellWidthPx) + ((inv.numColumns - 1) * gapScale * cellWidthPx))); availablePaddingX = (int) Math.min(availablePaddingX, width * MAX_HORIZONTAL_PADDING_PERCENT); int availablePaddingY = Math.max(0, height - paddingTop - paddingBottom - (int) (2 * inv.numRows * cellHeightPx)); padding.set(availableWidth / 2, paddingTop + availableHeight / 2, availableWidth / 2, paddingBottom + availableHeight / 2); padding.set(availablePaddingX / 2, paddingTop + availablePaddingY / 2, availablePaddingX / 2, paddingBottom + availablePaddingY / 2); } else { // Pad the top and bottom of the workspace with search/hotseat bar sizes padding.set(desiredWorkspaceLeftRightMarginPx - defaultWidgetPadding.left, Loading Loading @@ -418,6 +428,13 @@ public class DeviceProfile { // Layout the hotseat View hotseat = launcher.findViewById(R.id.hotseat); lp = (FrameLayout.LayoutParams) hotseat.getLayoutParams(); // We want the edges of the hotseat to line up with the edges of the workspace, but the // icons in the hotseat are a different size, and so don't line up perfectly. To account for // this, we pad the left and right of the hotseat with half of the difference of a workspace // cell vs a hotseat cell. float workspaceCellWidth = (float) getCurrentWidth() / inv.numColumns; float hotseatCellWidth = (float) getCurrentWidth() / inv.numHotseatIcons; int hotseatAdjustment = Math.round((workspaceCellWidth - hotseatCellWidth) / 2); if (hasVerticalBarLayout) { // Vertical hotseat -- The hotseat is fixed in the layout to be on the right of the // screen regardless of RTL Loading @@ -430,17 +447,18 @@ public class DeviceProfile { lp.gravity = Gravity.BOTTOM; lp.width = LayoutParams.MATCH_PARENT; lp.height = hotseatBarHeightPx; hotseat.setPadding(edgeMarginPx + padding.left, 0, edgeMarginPx + padding.right, 2 * edgeMarginPx); hotseat.findViewById(R.id.layout).setPadding( hotseatAdjustment + padding.left, 0, hotseatAdjustment + padding.right, 2 * edgeMarginPx); } else { // For phones, layout the hotseat without any bottom margin // to ensure that we have space for the folders lp.gravity = Gravity.BOTTOM; lp.width = LayoutParams.MATCH_PARENT; lp.height = hotseatBarHeightPx; hotseat.findViewById(R.id.layout).setPadding(2 * edgeMarginPx, 0, 2 * edgeMarginPx, 0); hotseat.findViewById(R.id.layout).setPadding( hotseatAdjustment + padding.left, 0, hotseatAdjustment + padding.right, 0); } hotseat.setLayoutParams(lp); Loading src/com/android/launcher3/Hotseat.java +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.launcher3; import android.content.Context; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.util.AttributeSet; Loading Loading @@ -116,6 +117,10 @@ public class Hotseat extends FrameLayout Drawable d = context.getResources().getDrawable(R.drawable.all_apps_button_icon); mLauncher.resizeIconDrawable(d); int scaleDownPx = getResources().getDimensionPixelSize(R.dimen.all_apps_button_scale_down); Rect bounds = d.getBounds(); d.setBounds(bounds.left, bounds.top + scaleDownPx / 2, bounds.right - scaleDownPx, bounds.bottom - scaleDownPx / 2); allAppsButton.setCompoundDrawables(null, d, null, null); allAppsButton.setContentDescription(context.getString(R.string.all_apps_button_label)); Loading src/com/android/launcher3/InvariantDeviceProfile.java +3 −3 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public class InvariantDeviceProfile { /** * Number of icons inside the hotseat area. */ float numHotseatIcons; int numHotseatIcons; float hotseatIconSize; int defaultLayoutId; Loading @@ -98,7 +98,7 @@ public class InvariantDeviceProfile { } InvariantDeviceProfile(String n, float w, float h, int r, int c, int fr, int fc, int maapc, float is, float its, float hs, float his, int dlId) { float is, float its, int hs, float his, int dlId) { // Ensure that we have an odd number of hotseat items (since we need to place all apps) if (hs % 2 == 0) { throw new RuntimeException("All Device Profiles must have an odd number of hotseat spaces"); Loading Loading @@ -201,7 +201,7 @@ public class InvariantDeviceProfile { 575, 904, 5, 6, 4, 5, 4, 72, 14.4f, 7, 60, R.xml.default_workspace_5x6)); // Larger tablet profiles always have system bars on the top & bottom predefinedDeviceProfiles.add(new InvariantDeviceProfile("Nexus 10", 727, 1207, 5, 6, 4, 5, 4, 76, 14.4f, 7, 64, R.xml.default_workspace_5x6)); 727, 1207, 5, 6, 4, 5, 4, 76, 14.4f, 7, 76, R.xml.default_workspace_5x6)); predefinedDeviceProfiles.add(new InvariantDeviceProfile("20-inch Tablet", 1527, 2527, 7, 7, 6, 6, 4, 100, 20, 7, 72, R.xml.default_workspace_4x4)); return predefinedDeviceProfiles; Loading Loading
res/values-sw720dp/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ <resources> <!-- All Apps --> <dimen name="all_apps_button_scale_down">8dp</dimen> <dimen name="all_apps_search_bar_height">54dp</dimen> <dimen name="all_apps_icon_top_bottom_padding">14dp</dimen> <dimen name="all_apps_empty_search_message_top_offset">64dp</dimen> Loading
res/values/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ <dimen name="container_fastscroll_popup_text_size">48dp</dimen> <!-- All Apps --> <dimen name="all_apps_button_scale_down">0dp</dimen> <dimen name="all_apps_grid_view_start_margin">0dp</dimen> <dimen name="all_apps_grid_section_y_offset">8dp</dimen> <dimen name="all_apps_grid_section_text_size">24sp</dimen> Loading
src/com/android/launcher3/DeviceProfile.java +29 −11 Original line number Diff line number Diff line Loading @@ -49,6 +49,12 @@ public class DeviceProfile { public final int heightPx; public final int availableWidthPx; public final int availableHeightPx; /** * The maximum amount of left/right workspace padding as a percentage of the screen width. * To be clear, this means that up to 7% of the screen width can be used as left padding, and * 7% of the screen width can be used as right padding. */ private static final float MAX_HORIZONTAL_PADDING_PERCENT = 0.14f; // Overview mode private final int overviewModeMinIconZoneHeightPx; Loading Loading @@ -167,7 +173,8 @@ public class DeviceProfile { private void computeAllAppsButtonSize(Context context) { Resources res = context.getResources(); float padding = res.getInteger(R.integer.config_allAppsButtonPaddingPercent) / 100f; allAppsButtonVisualSize = (int) (hotseatIconSizePx * (1 - padding)); allAppsButtonVisualSize = (int) (hotseatIconSizePx * (1 - padding)) - context.getResources() .getDimensionPixelSize(R.dimen.all_apps_button_scale_down); } private void updateAvailableDimensions(DisplayMetrics dm, Resources res) { Loading Loading @@ -314,12 +321,15 @@ public class DeviceProfile { int height = getCurrentHeight(); int paddingTop = searchBarBounds.bottom; int paddingBottom = hotseatBarHeightPx + pageIndicatorHeightPx; int availableWidth = Math.max(0, width - (int) ((inv.numColumns * cellWidthPx) + (inv.numColumns * gapScale * cellWidthPx))); int availableHeight = Math.max(0, height - paddingTop - paddingBottom // The amount of screen space available for left/right padding. int availablePaddingX = Math.max(0, width - (int) ((inv.numColumns * cellWidthPx) + ((inv.numColumns - 1) * gapScale * cellWidthPx))); availablePaddingX = (int) Math.min(availablePaddingX, width * MAX_HORIZONTAL_PADDING_PERCENT); int availablePaddingY = Math.max(0, height - paddingTop - paddingBottom - (int) (2 * inv.numRows * cellHeightPx)); padding.set(availableWidth / 2, paddingTop + availableHeight / 2, availableWidth / 2, paddingBottom + availableHeight / 2); padding.set(availablePaddingX / 2, paddingTop + availablePaddingY / 2, availablePaddingX / 2, paddingBottom + availablePaddingY / 2); } else { // Pad the top and bottom of the workspace with search/hotseat bar sizes padding.set(desiredWorkspaceLeftRightMarginPx - defaultWidgetPadding.left, Loading Loading @@ -418,6 +428,13 @@ public class DeviceProfile { // Layout the hotseat View hotseat = launcher.findViewById(R.id.hotseat); lp = (FrameLayout.LayoutParams) hotseat.getLayoutParams(); // We want the edges of the hotseat to line up with the edges of the workspace, but the // icons in the hotseat are a different size, and so don't line up perfectly. To account for // this, we pad the left and right of the hotseat with half of the difference of a workspace // cell vs a hotseat cell. float workspaceCellWidth = (float) getCurrentWidth() / inv.numColumns; float hotseatCellWidth = (float) getCurrentWidth() / inv.numHotseatIcons; int hotseatAdjustment = Math.round((workspaceCellWidth - hotseatCellWidth) / 2); if (hasVerticalBarLayout) { // Vertical hotseat -- The hotseat is fixed in the layout to be on the right of the // screen regardless of RTL Loading @@ -430,17 +447,18 @@ public class DeviceProfile { lp.gravity = Gravity.BOTTOM; lp.width = LayoutParams.MATCH_PARENT; lp.height = hotseatBarHeightPx; hotseat.setPadding(edgeMarginPx + padding.left, 0, edgeMarginPx + padding.right, 2 * edgeMarginPx); hotseat.findViewById(R.id.layout).setPadding( hotseatAdjustment + padding.left, 0, hotseatAdjustment + padding.right, 2 * edgeMarginPx); } else { // For phones, layout the hotseat without any bottom margin // to ensure that we have space for the folders lp.gravity = Gravity.BOTTOM; lp.width = LayoutParams.MATCH_PARENT; lp.height = hotseatBarHeightPx; hotseat.findViewById(R.id.layout).setPadding(2 * edgeMarginPx, 0, 2 * edgeMarginPx, 0); hotseat.findViewById(R.id.layout).setPadding( hotseatAdjustment + padding.left, 0, hotseatAdjustment + padding.right, 0); } hotseat.setLayoutParams(lp); Loading
src/com/android/launcher3/Hotseat.java +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.launcher3; import android.content.Context; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.util.AttributeSet; Loading Loading @@ -116,6 +117,10 @@ public class Hotseat extends FrameLayout Drawable d = context.getResources().getDrawable(R.drawable.all_apps_button_icon); mLauncher.resizeIconDrawable(d); int scaleDownPx = getResources().getDimensionPixelSize(R.dimen.all_apps_button_scale_down); Rect bounds = d.getBounds(); d.setBounds(bounds.left, bounds.top + scaleDownPx / 2, bounds.right - scaleDownPx, bounds.bottom - scaleDownPx / 2); allAppsButton.setCompoundDrawables(null, d, null, null); allAppsButton.setContentDescription(context.getString(R.string.all_apps_button_label)); Loading
src/com/android/launcher3/InvariantDeviceProfile.java +3 −3 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public class InvariantDeviceProfile { /** * Number of icons inside the hotseat area. */ float numHotseatIcons; int numHotseatIcons; float hotseatIconSize; int defaultLayoutId; Loading @@ -98,7 +98,7 @@ public class InvariantDeviceProfile { } InvariantDeviceProfile(String n, float w, float h, int r, int c, int fr, int fc, int maapc, float is, float its, float hs, float his, int dlId) { float is, float its, int hs, float his, int dlId) { // Ensure that we have an odd number of hotseat items (since we need to place all apps) if (hs % 2 == 0) { throw new RuntimeException("All Device Profiles must have an odd number of hotseat spaces"); Loading Loading @@ -201,7 +201,7 @@ public class InvariantDeviceProfile { 575, 904, 5, 6, 4, 5, 4, 72, 14.4f, 7, 60, R.xml.default_workspace_5x6)); // Larger tablet profiles always have system bars on the top & bottom predefinedDeviceProfiles.add(new InvariantDeviceProfile("Nexus 10", 727, 1207, 5, 6, 4, 5, 4, 76, 14.4f, 7, 64, R.xml.default_workspace_5x6)); 727, 1207, 5, 6, 4, 5, 4, 76, 14.4f, 7, 76, R.xml.default_workspace_5x6)); predefinedDeviceProfiles.add(new InvariantDeviceProfile("20-inch Tablet", 1527, 2527, 7, 7, 6, 6, 4, 100, 20, 7, 72, R.xml.default_workspace_4x4)); return predefinedDeviceProfiles; Loading