mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-19 10:48:19 +00:00
am d6b4037b: Grid adjustments, specifically for Ryu.
* commit 'd6b4037b093445fefa7d036da339dd549fae7a9b': Grid adjustments, specifically for Ryu.
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -63,6 +63,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>
|
||||
|
||||
@@ -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;
|
||||
@@ -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) {
|
||||
@@ -302,12 +309,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,
|
||||
@@ -420,6 +430,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
|
||||
@@ -432,17 +449,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);
|
||||
|
||||
|
||||
@@ -17,8 +17,7 @@
|
||||
package com.android.launcher3;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.util.AttributeSet;
|
||||
@@ -118,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));
|
||||
|
||||
@@ -74,7 +74,7 @@ public class InvariantDeviceProfile {
|
||||
/**
|
||||
* Number of icons inside the hotseat area.
|
||||
*/
|
||||
float numHotseatIcons;
|
||||
int numHotseatIcons;
|
||||
float hotseatIconSize;
|
||||
int defaultLayoutId;
|
||||
|
||||
@@ -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");
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user