summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Miranda <jonmiranda@google.com>2017-06-29 11:36:34 -0700
committerJon Miranda <jonmiranda@google.com>2017-07-06 08:05:26 -0700
commit2ed276eb13f38e3383eab872b0bff26d569528c1 (patch)
tree467f53fe7ca3eb4e000d2ae685b6d9454941081c
parent6f031845ac0e0cae174a5fe866b2857a0a0fa1cf (diff)
downloadandroid_packages_apps_Trebuchet-2ed276eb13f38e3383eab872b0bff26d569528c1.tar.gz
android_packages_apps_Trebuchet-2ed276eb13f38e3383eab872b0bff26d569528c1.tar.bz2
android_packages_apps_Trebuchet-2ed276eb13f38e3383eab872b0bff26d569528c1.zip
New calculation for page indicator size on tall devices.
For a display with a large aspect ratio, the icons can get too far spread out in portrait mode. We remedy this by adjusting the page indicator height to utilize that extra space. Bug: 62801588 Change-Id: Ib717dd32a20918248b59e1b46b4e881d6d6a7cb5
-rw-r--r--res/layout-land/launcher.xml4
-rw-r--r--res/layout/page_indicator.xml4
-rw-r--r--res/values-land/dimens.xml2
-rw-r--r--res/values/dimens.xml2
-rw-r--r--src/com/android/launcher3/DeviceProfile.java26
5 files changed, 27 insertions, 11 deletions
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 2bbd76d52..e6f98a49a 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -63,8 +63,8 @@
<com.android.launcher3.pageindicators.PageIndicatorCaretLandscape
android:id="@+id/page_indicator"
android:theme="@style/HomeScreenElementTheme"
- android:layout_width="@dimen/dynamic_grid_page_indicator_size"
- android:layout_height="@dimen/dynamic_grid_page_indicator_size"
+ android:layout_width="@dimen/dynamic_grid_min_page_indicator_size"
+ android:layout_height="@dimen/dynamic_grid_min_page_indicator_size"
android:layout_gravity="bottom|left"/>
<include layout="@layout/widgets_view"
diff --git a/res/layout/page_indicator.xml b/res/layout/page_indicator.xml
index 14ff2bd28..92f52d672 100644
--- a/res/layout/page_indicator.xml
+++ b/res/layout/page_indicator.xml
@@ -18,11 +18,11 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:theme="@style/HomeScreenElementTheme"
android:layout_width="match_parent"
- android:layout_height="@dimen/dynamic_grid_page_indicator_size">
+ android:layout_height="@dimen/dynamic_grid_min_page_indicator_size">
<ImageView
android:id="@+id/all_apps_handle"
android:layout_width="48dp"
- android:layout_height="match_parent"
+ android:layout_height="@dimen/dynamic_grid_min_page_indicator_size"
android:layout_gravity="top|center"
android:scaleType="centerInside"/>
</com.android.launcher3.pageindicators.PageIndicatorLineCaret>
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index 0db0e615f..1d36f75cb 100644
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -26,7 +26,7 @@
<!-- Dynamic grid -->
<dimen name="dynamic_grid_overview_bar_item_width">120dp</dimen>
- <dimen name="dynamic_grid_page_indicator_size">24dp</dimen>
+ <dimen name="dynamic_grid_min_page_indicator_size">24dp</dimen>
<dimen name="folder_preview_padding">5dp</dimen>
<!-- Hotseat -->
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 980b71483..21abd3c93 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -17,7 +17,7 @@
<resources>
<!-- Dynamic Grid -->
<dimen name="dynamic_grid_edge_margin">16dp</dimen>
- <dimen name="dynamic_grid_page_indicator_size">32dp</dimen>
+ <dimen name="dynamic_grid_min_page_indicator_size">32dp</dimen>
<dimen name="dynamic_grid_page_indicator_line_height">1dp</dimen>
<dimen name="dynamic_grid_page_indicator_gutter_width">50dp</dimen>
<dimen name="dynamic_grid_icon_drawable_padding">8dp</dimen>
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index eef651044..7520be2f6 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -80,7 +80,7 @@ public class DeviceProfile {
public final int workspaceSpringLoadedBottomSpace;
// Page indicator
- private final int pageIndicatorSizePx;
+ private int pageIndicatorSizePx;
private final int pageIndicatorLandGutterPx;
private final int pageIndicatorLandWorkspaceOffsetPx;
@@ -172,7 +172,8 @@ public class DeviceProfile {
defaultWidgetPadding = AppWidgetHostView.getDefaultPaddingForWidget(context, cn, null);
edgeMarginPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_edge_margin);
desiredWorkspaceLeftRightMarginPx = edgeMarginPx;
- pageIndicatorSizePx = res.getDimensionPixelSize(R.dimen.dynamic_grid_page_indicator_size);
+ pageIndicatorSizePx = res.getDimensionPixelSize(
+ R.dimen.dynamic_grid_min_page_indicator_size);
pageIndicatorLandGutterPx = res.getDimensionPixelSize(
R.dimen.dynamic_grid_page_indicator_gutter_width);
pageIndicatorLandWorkspaceOffsetPx =
@@ -228,8 +229,23 @@ public class DeviceProfile {
availableHeightPx = maxSize.y;
}
- // Calculate the remaining vars
+ // Calculate all of the remaining variables.
updateAvailableDimensions(dm, res);
+
+ // Now that we have all of the variables calculated, we can tune certain sizes.
+ if (!isVerticalBarLayout()) {
+ // We increase the page indicator size when there is extra space.
+ // ie. For a display with a large aspect ratio, we can keep the icons on the workspace
+ // in portrait mode closer together by increasing the page indicator size.
+ int newPageIndicatorSizePx = getCellSize().y - iconSizePx - iconTextSizePx
+ - iconDrawablePaddingOriginalPx;
+ if (newPageIndicatorSizePx > pageIndicatorSizePx) {
+ pageIndicatorSizePx = newPageIndicatorSizePx;
+ // Recalculate the available dimensions using the new page indicator size.
+ updateAvailableDimensions(dm, res);
+ }
+ }
+
computeAllAppsButtonSize(context);
// This is done last, after iconSizePx is calculated above.
@@ -484,8 +500,8 @@ public class DeviceProfile {
return new Rect(mInsets.left,
mInsets.top + dropTargetBarSizePx + edgeMarginPx,
mInsets.left + availableWidthPx,
- mInsets.top + availableHeightPx - hotseatBarHeightPx - pageIndicatorSizePx -
- edgeMarginPx);
+ mInsets.top + availableHeightPx - hotseatBarHeightPx
+ - pageIndicatorSizePx - edgeMarginPx);
}
}