Loading res/values/dimens.xml +6 −3 Original line number Diff line number Diff line Loading @@ -18,13 +18,16 @@ <!-- Dynamic Grid --> <dimen name="dynamic_grid_edge_margin">6dp</dimen> <dimen name="dynamic_grid_search_bar_height">48dp</dimen> <!-- We want 32dp extra for the tall search bar. --> <dimen name="dynamic_grid_search_bar_height_tall">80dp</dimen> <!-- We want 46dp extra for the tall search bar. --> <dimen name="dynamic_grid_search_bar_height_tall">94dp</dimen> <dimen name="qsb_internal_padding_top">8dp</dimen> <dimen name="qsb_internal_padding_bottom">8dp</dimen> <dimen name="dynamic_grid_search_bar_extra_top_padding">0dp</dimen> <!-- Reduce the space between the status bar and the search bar when the search bar is tall --> <dimen name="dynamic_grid_search_bar_negative_top_padding_short">-4dp</dimen> <dimen name="dynamic_grid_search_bar_bottom_padding">4dp</dimen> <!-- Reduce the padding between the search bar and workspace when the search bar is tall --> <dimen name="dynamic_grid_search_bar_bottom_padding_short">-6dp</dimen> <dimen name="dynamic_grid_search_bar_bottom_negative_padding_short">-6dp</dimen> <dimen name="dynamic_grid_search_bar_bottom_padding_tablet">16dp</dimen> <dimen name="dynamic_grid_page_indicator_height">20dp</dimen> <dimen name="dynamic_grid_icon_drawable_padding">4dp</dimen> Loading src/com/android/launcher3/DeviceProfile.java +14 −3 Original line number Diff line number Diff line Loading @@ -103,6 +103,8 @@ public class DeviceProfile { // QSB private int searchBarWidgetInternalPaddingTop, searchBarWidgetInternalPaddingBottom; private int searchBarTopPaddingPx; private int tallSearchBarNegativeTopPaddingPx, normalSearchBarTopExtraPaddingPx; private int searchBarTopExtraPaddingPx; // One of the above. private int normalSearchBarBottomPaddingPx, tallSearchBarBottomPaddingPx; private int searchBarBottomPaddingPx; // One of the above. private int normalSearchBarSpaceHeightPx, tallSearchBarSpaceHeightPx; Loading Loading @@ -216,6 +218,10 @@ public class DeviceProfile { R.dimen.qsb_internal_padding_top); searchBarWidgetInternalPaddingBottom = res.getDimensionPixelSize( R.dimen.qsb_internal_padding_bottom); normalSearchBarTopExtraPaddingPx = res.getDimensionPixelSize( R.dimen.dynamic_grid_search_bar_extra_top_padding); tallSearchBarNegativeTopPaddingPx = res.getDimensionPixelSize( R.dimen.dynamic_grid_search_bar_negative_top_padding_short); if (isTablet && !isVerticalBarLayout()) { searchBarTopPaddingPx = searchBarWidgetInternalPaddingTop; normalSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom + Loading @@ -225,8 +231,9 @@ public class DeviceProfile { 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); tallSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom + res.getDimensionPixelSize( R.dimen.dynamic_grid_search_bar_bottom_negative_padding_short); } // Calculate the actual text height Loading Loading @@ -272,7 +279,7 @@ public class DeviceProfile { /** Returns the amount of extra space to allocate to the search bar for vertical padding. */ private int getSearchBarTotalVerticalPadding() { return searchBarTopPaddingPx + searchBarBottomPaddingPx; return searchBarTopPaddingPx + searchBarTopExtraPaddingPx + searchBarBottomPaddingPx; } /** Returns the width and height of the search bar, ignoring any padding. */ Loading Loading @@ -439,10 +446,13 @@ public class DeviceProfile { hotseatBarHeightPx = shortHotseatBarHeightPx; searchBarSpaceHeightPx = tallSearchBarSpaceHeightPx; searchBarBottomPaddingPx = tallSearchBarBottomPaddingPx; searchBarTopExtraPaddingPx = isPhone ? tallSearchBarNegativeTopPaddingPx : normalSearchBarTopExtraPaddingPx; } else { hotseatBarHeightPx = normalHotseatBarHeightPx; searchBarSpaceHeightPx = normalSearchBarSpaceHeightPx; searchBarBottomPaddingPx = normalSearchBarBottomPaddingPx; searchBarTopExtraPaddingPx = normalSearchBarTopExtraPaddingPx; } } Loading @@ -457,6 +467,7 @@ public class DeviceProfile { lp = getDropTargetBarLayoutParams(hasVerticalBarLayout, searchBar, Gravity.TOP); lp.width = searchBarBounds.width(); lp.height = searchBarBounds.height(); lp.topMargin = searchBarTopExtraPaddingPx; searchBar.setLayoutParams(lp); // Layout the app info bar space Loading tests/src/com/android/launcher3/InvariantDeviceProfileTest.java +8 −13 Original line number Diff line number Diff line Loading @@ -108,15 +108,9 @@ public class InvariantDeviceProfileTest extends AndroidTestCase { if (!android.os.Build.DEVICE.equals("hammerhead")) { return; } assertEquals(mInvariantProfile.numRows, 4); assertEquals(mInvariantProfile.numColumns, 4); assertEquals((int) mInvariantProfile.numHotseatIcons, 5); DeviceProfile landscapeProfile = mInvariantProfile.landscapeProfile; DeviceProfile portraitProfile = mInvariantProfile.portraitProfile; assertEquals(portraitProfile.allAppsNumCols, 3); assertEquals(landscapeProfile.allAppsNumCols, 5); // not used assertEquals(4, mInvariantProfile.numRows); assertEquals(4, mInvariantProfile.numColumns); assertEquals(5, mInvariantProfile.numHotseatIcons); } // Add more tests for other devices, however, running them once on a single device is enough Loading Loading @@ -172,10 +166,11 @@ public class InvariantDeviceProfileTest extends AndroidTestCase { Rect landscapeBounds = landscapeProfile.getSearchBarBounds(true); // RTL shouldn't matter. int landscapeHeight = (int) Utilities.dpiFromPx(landscapeBounds.height(), resources.getDisplayMetrics()); if (portraitProfile.isTablet) { assertEquals(8 + 80 + 24, portraitHeight); if (portraitProfile.isPhone) { // This fails on some devices due to http://b/26884580 (portraitHeight is 101, not 100). assertEquals(4 + 94 + 2, portraitHeight); } else { assertEquals(8 + 80 + 2, portraitHeight); assertEquals(8 + 94 + 24, portraitHeight); } // Make sure the height that we pass in the widget options bundle is the height of the // search bar + 8dps padding top and bottom. Loading @@ -183,7 +178,7 @@ public class InvariantDeviceProfileTest extends AndroidTestCase { int portraitWidgetOptsHeight = portraitDimens.y; Point landscapeDimens = landscapeProfile.getSearchBarDimensForWidgetOpts(resources); int landscapeWidgetOptsHeight = landscapeDimens.y; assertEquals(8 + 80 + 8, (int) Utilities.dpiFromPx(portraitWidgetOptsHeight, assertEquals(8 + 94 + 8, (int) Utilities.dpiFromPx(portraitWidgetOptsHeight, resources.getDisplayMetrics())); if (!landscapeProfile.isVerticalBarLayout()) { assertEquals(portraitHeight, landscapeHeight); Loading Loading
res/values/dimens.xml +6 −3 Original line number Diff line number Diff line Loading @@ -18,13 +18,16 @@ <!-- Dynamic Grid --> <dimen name="dynamic_grid_edge_margin">6dp</dimen> <dimen name="dynamic_grid_search_bar_height">48dp</dimen> <!-- We want 32dp extra for the tall search bar. --> <dimen name="dynamic_grid_search_bar_height_tall">80dp</dimen> <!-- We want 46dp extra for the tall search bar. --> <dimen name="dynamic_grid_search_bar_height_tall">94dp</dimen> <dimen name="qsb_internal_padding_top">8dp</dimen> <dimen name="qsb_internal_padding_bottom">8dp</dimen> <dimen name="dynamic_grid_search_bar_extra_top_padding">0dp</dimen> <!-- Reduce the space between the status bar and the search bar when the search bar is tall --> <dimen name="dynamic_grid_search_bar_negative_top_padding_short">-4dp</dimen> <dimen name="dynamic_grid_search_bar_bottom_padding">4dp</dimen> <!-- Reduce the padding between the search bar and workspace when the search bar is tall --> <dimen name="dynamic_grid_search_bar_bottom_padding_short">-6dp</dimen> <dimen name="dynamic_grid_search_bar_bottom_negative_padding_short">-6dp</dimen> <dimen name="dynamic_grid_search_bar_bottom_padding_tablet">16dp</dimen> <dimen name="dynamic_grid_page_indicator_height">20dp</dimen> <dimen name="dynamic_grid_icon_drawable_padding">4dp</dimen> Loading
src/com/android/launcher3/DeviceProfile.java +14 −3 Original line number Diff line number Diff line Loading @@ -103,6 +103,8 @@ public class DeviceProfile { // QSB private int searchBarWidgetInternalPaddingTop, searchBarWidgetInternalPaddingBottom; private int searchBarTopPaddingPx; private int tallSearchBarNegativeTopPaddingPx, normalSearchBarTopExtraPaddingPx; private int searchBarTopExtraPaddingPx; // One of the above. private int normalSearchBarBottomPaddingPx, tallSearchBarBottomPaddingPx; private int searchBarBottomPaddingPx; // One of the above. private int normalSearchBarSpaceHeightPx, tallSearchBarSpaceHeightPx; Loading Loading @@ -216,6 +218,10 @@ public class DeviceProfile { R.dimen.qsb_internal_padding_top); searchBarWidgetInternalPaddingBottom = res.getDimensionPixelSize( R.dimen.qsb_internal_padding_bottom); normalSearchBarTopExtraPaddingPx = res.getDimensionPixelSize( R.dimen.dynamic_grid_search_bar_extra_top_padding); tallSearchBarNegativeTopPaddingPx = res.getDimensionPixelSize( R.dimen.dynamic_grid_search_bar_negative_top_padding_short); if (isTablet && !isVerticalBarLayout()) { searchBarTopPaddingPx = searchBarWidgetInternalPaddingTop; normalSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom + Loading @@ -225,8 +231,9 @@ public class DeviceProfile { 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); tallSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom + res.getDimensionPixelSize( R.dimen.dynamic_grid_search_bar_bottom_negative_padding_short); } // Calculate the actual text height Loading Loading @@ -272,7 +279,7 @@ public class DeviceProfile { /** Returns the amount of extra space to allocate to the search bar for vertical padding. */ private int getSearchBarTotalVerticalPadding() { return searchBarTopPaddingPx + searchBarBottomPaddingPx; return searchBarTopPaddingPx + searchBarTopExtraPaddingPx + searchBarBottomPaddingPx; } /** Returns the width and height of the search bar, ignoring any padding. */ Loading Loading @@ -439,10 +446,13 @@ public class DeviceProfile { hotseatBarHeightPx = shortHotseatBarHeightPx; searchBarSpaceHeightPx = tallSearchBarSpaceHeightPx; searchBarBottomPaddingPx = tallSearchBarBottomPaddingPx; searchBarTopExtraPaddingPx = isPhone ? tallSearchBarNegativeTopPaddingPx : normalSearchBarTopExtraPaddingPx; } else { hotseatBarHeightPx = normalHotseatBarHeightPx; searchBarSpaceHeightPx = normalSearchBarSpaceHeightPx; searchBarBottomPaddingPx = normalSearchBarBottomPaddingPx; searchBarTopExtraPaddingPx = normalSearchBarTopExtraPaddingPx; } } Loading @@ -457,6 +467,7 @@ public class DeviceProfile { lp = getDropTargetBarLayoutParams(hasVerticalBarLayout, searchBar, Gravity.TOP); lp.width = searchBarBounds.width(); lp.height = searchBarBounds.height(); lp.topMargin = searchBarTopExtraPaddingPx; searchBar.setLayoutParams(lp); // Layout the app info bar space Loading
tests/src/com/android/launcher3/InvariantDeviceProfileTest.java +8 −13 Original line number Diff line number Diff line Loading @@ -108,15 +108,9 @@ public class InvariantDeviceProfileTest extends AndroidTestCase { if (!android.os.Build.DEVICE.equals("hammerhead")) { return; } assertEquals(mInvariantProfile.numRows, 4); assertEquals(mInvariantProfile.numColumns, 4); assertEquals((int) mInvariantProfile.numHotseatIcons, 5); DeviceProfile landscapeProfile = mInvariantProfile.landscapeProfile; DeviceProfile portraitProfile = mInvariantProfile.portraitProfile; assertEquals(portraitProfile.allAppsNumCols, 3); assertEquals(landscapeProfile.allAppsNumCols, 5); // not used assertEquals(4, mInvariantProfile.numRows); assertEquals(4, mInvariantProfile.numColumns); assertEquals(5, mInvariantProfile.numHotseatIcons); } // Add more tests for other devices, however, running them once on a single device is enough Loading Loading @@ -172,10 +166,11 @@ public class InvariantDeviceProfileTest extends AndroidTestCase { Rect landscapeBounds = landscapeProfile.getSearchBarBounds(true); // RTL shouldn't matter. int landscapeHeight = (int) Utilities.dpiFromPx(landscapeBounds.height(), resources.getDisplayMetrics()); if (portraitProfile.isTablet) { assertEquals(8 + 80 + 24, portraitHeight); if (portraitProfile.isPhone) { // This fails on some devices due to http://b/26884580 (portraitHeight is 101, not 100). assertEquals(4 + 94 + 2, portraitHeight); } else { assertEquals(8 + 80 + 2, portraitHeight); assertEquals(8 + 94 + 24, portraitHeight); } // Make sure the height that we pass in the widget options bundle is the height of the // search bar + 8dps padding top and bottom. Loading @@ -183,7 +178,7 @@ public class InvariantDeviceProfileTest extends AndroidTestCase { int portraitWidgetOptsHeight = portraitDimens.y; Point landscapeDimens = landscapeProfile.getSearchBarDimensForWidgetOpts(resources); int landscapeWidgetOptsHeight = landscapeDimens.y; assertEquals(8 + 80 + 8, (int) Utilities.dpiFromPx(portraitWidgetOptsHeight, assertEquals(8 + 94 + 8, (int) Utilities.dpiFromPx(portraitWidgetOptsHeight, resources.getDisplayMetrics())); if (!landscapeProfile.isVerticalBarLayout()) { assertEquals(portraitHeight, landscapeHeight); Loading