summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/DeviceProfile.java
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2015-10-23 11:43:47 -0700
committerTony Wickham <twickham@google.com>2015-10-29 12:18:28 -0700
commita3c74d10a7d6e2ae8520e73176f939011e726ccf (patch)
treef3d76303f988a81182778a98876b2a23c96156c7 /src/com/android/launcher3/DeviceProfile.java
parentcbdb15389330aac3e4f5f404c20195ba13991dbb (diff)
downloadandroid_packages_apps_Trebuchet-a3c74d10a7d6e2ae8520e73176f939011e726ccf.tar.gz
android_packages_apps_Trebuchet-a3c74d10a7d6e2ae8520e73176f939011e726ccf.tar.bz2
android_packages_apps_Trebuchet-a3c74d10a7d6e2ae8520e73176f939011e726ccf.zip
Setting correct height for search bar widget options bundle.
- Seperate search bar height from its top and bottom paddings - Report this height plus 8dps top and bottom for the widget options - Use a separate bottom padding to adjust spacing between QSB and the workspace - Add tests to verify the height of the search bar in both normal and tall modes (ran on Nexus 6, 7, and 10) Change-Id: Ia7557785d1b38194eee869d0460456e8f33447d5
Diffstat (limited to 'src/com/android/launcher3/DeviceProfile.java')
-rw-r--r--src/com/android/launcher3/DeviceProfile.java108
1 files changed, 66 insertions, 42 deletions
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index ed6b7d7a8..c0ad5163f 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -90,7 +90,7 @@ public class DeviceProfile {
public int hotseatCellWidthPx;
public int hotseatCellHeightPx;
public int hotseatIconSizePx;
- private int hotseatBarHeightNormalPx, hotseatBarHeightShortPx;
+ private int normalHotseatBarHeightPx, shortHotseatBarHeightPx;
private int hotseatBarHeightPx; // One of the above.
// All apps
@@ -101,8 +101,11 @@ public class DeviceProfile {
public final int allAppsIconTextSizePx;
// QSB
- private int searchBarSpaceWidthPx;
- private int searchBarSpaceHeightNormalPx, searchBarSpaceHeightTallPx;
+ private int searchBarWidgetInternalPaddingTop, searchBarWidgetInternalPaddingBottom;
+ private int searchBarTopPaddingPx;
+ private int normalSearchBarBottomPaddingPx, tallSearchBarBottomPaddingPx;
+ private int searchBarBottomPaddingPx; // One of the above.
+ private int normalSearchBarSpaceHeightPx, tallSearchBarSpaceHeightPx;
private int searchBarSpaceHeightPx; // One of the above.
public DeviceProfile(Context context, InvariantDeviceProfile inv,
@@ -205,12 +208,26 @@ public class DeviceProfile {
hotseatIconSizePx = (int) (Utilities.pxFromDp(inv.hotseatIconSize, dm) * scale);
// Search Bar
- searchBarSpaceWidthPx = Math.min(widthPx,
- res.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_max_width));
- searchBarSpaceHeightNormalPx = getSearchBarTopOffset()
- + res.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_height);
- searchBarSpaceHeightTallPx = getSearchBarTopOffset()
- + res.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_height_tall);
+ normalSearchBarSpaceHeightPx = res.getDimensionPixelSize(
+ R.dimen.dynamic_grid_search_bar_height);
+ tallSearchBarSpaceHeightPx = res.getDimensionPixelSize(
+ R.dimen.dynamic_grid_search_bar_height_tall);
+ searchBarWidgetInternalPaddingTop = res.getDimensionPixelSize(
+ R.dimen.qsb_internal_padding_top);
+ searchBarWidgetInternalPaddingBottom = res.getDimensionPixelSize(
+ R.dimen.qsb_internal_padding_bottom);
+ if (isTablet && !isVerticalBarLayout()) {
+ searchBarTopPaddingPx = searchBarWidgetInternalPaddingTop;
+ normalSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom +
+ res.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_bottom_padding_tablet);
+ tallSearchBarBottomPaddingPx = normalSearchBarBottomPaddingPx;
+ } else {
+ searchBarTopPaddingPx = searchBarWidgetInternalPaddingTop;
+ normalSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom +
+ res.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_bottom_padding);
+ tallSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom +
+ res.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_bottom_padding_short);
+ }
// Calculate the actual text height
Paint textPaint = new Paint();
@@ -222,8 +239,8 @@ public class DeviceProfile {
dragViewScale = (iconSizePx + scaleDps) / iconSizePx;
// Hotseat
- hotseatBarHeightNormalPx = iconSizePx + 4 * edgeMarginPx;
- hotseatBarHeightShortPx = iconSizePx + 2 * edgeMarginPx;
+ normalHotseatBarHeightPx = iconSizePx + 4 * edgeMarginPx;
+ shortHotseatBarHeightPx = iconSizePx + 2 * edgeMarginPx;
hotseatCellWidthPx = iconSizePx;
hotseatCellHeightPx = iconSizePx;
@@ -251,13 +268,20 @@ public class DeviceProfile {
allAppsNumPredictiveCols = numPredictiveAppCols;
}
- /** Returns the search bar top offset */
- private int getSearchBarTopOffset() {
- if (isTablet && !isVerticalBarLayout()) {
- return 4 * edgeMarginPx;
- } else {
- return 2 * edgeMarginPx;
+ /** Returns the amount of extra space to allocate to the search bar for vertical padding. */
+ private int getSearchBarTotalVerticalPadding() {
+ return searchBarTopPaddingPx + searchBarBottomPaddingPx;
+ }
+
+ /** Returns the width and height of the search bar, ignoring any padding. */
+ public Point getSearchBarDimensForWidgetOpts(Resources res) {
+ Rect searchBarBounds = getSearchBarBounds(Utilities.isRtl(res));
+ if (isVerticalBarLayout()) {
+ return new Point(searchBarBounds.width(), searchBarBounds.height());
}
+ int widgetInternalPadding = searchBarWidgetInternalPaddingTop +
+ searchBarWidgetInternalPaddingBottom;
+ return new Point(searchBarBounds.width(), searchBarSpaceHeightPx + widgetInternalPadding);
}
/** Returns the search bar bounds in the current orientation */
@@ -265,13 +289,14 @@ public class DeviceProfile {
Rect bounds = new Rect();
if (isVerticalBarLayout()) {
if (isLayoutRtl) {
- bounds.set(availableWidthPx - searchBarSpaceHeightNormalPx, edgeMarginPx,
+ bounds.set(availableWidthPx - normalSearchBarSpaceHeightPx, edgeMarginPx,
availableWidthPx, availableHeightPx - edgeMarginPx);
} else {
- bounds.set(0, edgeMarginPx, searchBarSpaceHeightNormalPx,
+ bounds.set(0, edgeMarginPx, normalSearchBarSpaceHeightPx,
availableHeightPx - edgeMarginPx);
}
} else {
+ int boundsBottom = searchBarSpaceHeightPx + getSearchBarTotalVerticalPadding();
if (isTablet) {
// Pad the left and right of the workspace to ensure consistent spacing
// between all icons
@@ -280,14 +305,13 @@ public class DeviceProfile {
// that into account here too.
int gap = (int) ((width - 2 * edgeMarginPx -
(inv.numColumns * cellWidthPx)) / (2 * (inv.numColumns + 1)));
- bounds.set(edgeMarginPx + gap, getSearchBarTopOffset(),
- availableWidthPx - (edgeMarginPx + gap),
- searchBarSpaceHeightPx);
+ bounds.set(edgeMarginPx + gap, 0,
+ availableWidthPx - (edgeMarginPx + gap), boundsBottom);
} else {
bounds.set(desiredWorkspaceLeftRightMarginPx - defaultWidgetPadding.left,
- getSearchBarTopOffset(),
+ 0,
availableWidthPx - (desiredWorkspaceLeftRightMarginPx -
- defaultWidgetPadding.right), searchBarSpaceHeightPx);
+ defaultWidgetPadding.right), boundsBottom);
}
}
return bounds;
@@ -300,21 +324,21 @@ public class DeviceProfile {
if (isVerticalBarLayout()) {
// Pad the left and right of the workspace with search/hotseat bar sizes
if (isLayoutRtl) {
- padding.set(hotseatBarHeightNormalPx, edgeMarginPx,
+ padding.set(normalHotseatBarHeightPx, edgeMarginPx,
searchBarBounds.width(), edgeMarginPx);
} else {
padding.set(searchBarBounds.width(), edgeMarginPx,
- hotseatBarHeightNormalPx, edgeMarginPx);
+ normalHotseatBarHeightPx, edgeMarginPx);
}
} else {
+ int paddingTop = searchBarBounds.bottom;
+ int paddingBottom = hotseatBarHeightPx + pageIndicatorHeightPx;
if (isTablet) {
// Pad the left and right of the workspace to ensure consistent spacing
// between all icons
float gapScale = 1f + (dragViewScale - 1f) / 2f;
int width = getCurrentWidth();
int height = getCurrentHeight();
- int paddingTop = searchBarBounds.bottom;
- int paddingBottom = hotseatBarHeightPx + pageIndicatorHeightPx;
// 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)));
@@ -327,9 +351,9 @@ public class DeviceProfile {
} else {
// Pad the top and bottom of the workspace with search/hotseat bar sizes
padding.set(desiredWorkspaceLeftRightMarginPx - defaultWidgetPadding.left,
- searchBarBounds.bottom,
+ paddingTop,
desiredWorkspaceLeftRightMarginPx - defaultWidgetPadding.right,
- hotseatBarHeightPx + pageIndicatorHeightPx);
+ paddingBottom);
}
}
return padding;
@@ -357,7 +381,7 @@ public class DeviceProfile {
// The rect returned will be extended to below the system ui that covers the workspace
Rect getHotseatRect() {
if (isVerticalBarLayout()) {
- return new Rect(availableWidthPx - hotseatBarHeightNormalPx, 0,
+ return new Rect(availableWidthPx - normalHotseatBarHeightPx, 0,
Integer.MAX_VALUE, availableHeightPx);
} else {
return new Rect(0, availableHeightPx - hotseatBarHeightPx,
@@ -398,11 +422,13 @@ public class DeviceProfile {
// TODO(twickham): b/25154513
public void setSearchBarHeight(int searchBarHeight) {
if (searchBarHeight == LauncherCallbacks.SEARCH_BAR_HEIGHT_TALL) {
- hotseatBarHeightPx = hotseatBarHeightShortPx;
- searchBarSpaceHeightPx = searchBarSpaceHeightTallPx;
+ hotseatBarHeightPx = shortHotseatBarHeightPx;
+ searchBarSpaceHeightPx = tallSearchBarSpaceHeightPx;
+ searchBarBottomPaddingPx = tallSearchBarBottomPaddingPx;
} else {
- hotseatBarHeightPx = hotseatBarHeightNormalPx;
- searchBarSpaceHeightPx = searchBarSpaceHeightNormalPx;
+ hotseatBarHeightPx = normalHotseatBarHeightPx;
+ searchBarSpaceHeightPx = normalSearchBarSpaceHeightPx;
+ searchBarBottomPaddingPx = normalSearchBarBottomPaddingPx;
}
}
@@ -412,13 +438,15 @@ public class DeviceProfile {
final boolean isLayoutRtl = Utilities.isRtl(launcher.getResources());
// Layout the search bar space
+ Rect searchBarBounds = getSearchBarBounds(isLayoutRtl);
View searchBar = launcher.getSearchDropTargetBar();
lp = (FrameLayout.LayoutParams) searchBar.getLayoutParams();
+ lp.width = searchBarBounds.width();
+ lp.height = searchBarBounds.height();
if (hasVerticalBarLayout) {
// Vertical search bar space -- The search bar is fixed in the layout to be on the left
// of the screen regardless of RTL
lp.gravity = Gravity.LEFT;
- lp.width = searchBarSpaceHeightNormalPx;
LinearLayout targets = (LinearLayout) searchBar.findViewById(R.id.drag_target_bar);
targets.setOrientation(LinearLayout.VERTICAL);
@@ -428,11 +456,7 @@ public class DeviceProfile {
} else {
// Horizontal search bar space
- lp.gravity = Gravity.TOP;
- lp.height = searchBarSpaceHeightPx;
-
- LinearLayout targets = (LinearLayout) searchBar.findViewById(R.id.drag_target_bar);
- targets.getLayoutParams().width = searchBarSpaceWidthPx;
+ lp.gravity = Gravity.TOP|Gravity.CENTER_HORIZONTAL;
}
searchBar.setLayoutParams(lp);
@@ -459,7 +483,7 @@ public class DeviceProfile {
// Vertical hotseat -- The hotseat is fixed in the layout to be on the right of the
// screen regardless of RTL
lp.gravity = Gravity.RIGHT;
- lp.width = hotseatBarHeightNormalPx;
+ lp.width = normalHotseatBarHeightPx;
lp.height = LayoutParams.MATCH_PARENT;
hotseat.findViewById(R.id.layout).setPadding(0, 2 * edgeMarginPx, 0, 2 * edgeMarginPx);
} else if (isTablet) {