From 4ea2fdb97a1c984078d0cb209e003b7a844fc30c Mon Sep 17 00:00:00 2001 From: Aaron Heuckroth Date: Thu, 14 Feb 2019 16:28:35 -0500 Subject: [PATCH] Add support for small screens to grid-based global actions menu. Test: Automated tests pass, GAM looks decent at all "Display size" settings on a Pixel 2/3. Change-Id: Ib9f2e30e5bf400005cf8abbae123138b0c0022f2 --- .../res/layout-land/global_actions_grid.xml | 19 +++++----- .../global_actions_grid_seascape.xml | 21 ++++++----- .../res/layout/global_actions_grid.xml | 19 +++++----- .../res/layout/global_actions_grid_item.xml | 31 +++++++--------- .../res/values-sw320dp-land/dimens.xml | 27 ++++++++++++++ .../SystemUI/res/values-sw320dp/dimens.xml | 37 +++++++++++++++++++ .../res/values-sw410dp-land/dimens.xml | 27 ++++++++++++++ .../SystemUI/res/values-sw410dp/dimens.xml | 18 +++++++++ packages/SystemUI/res/values/dimens.xml | 19 ++-------- .../com/android/systemui/MultiListLayout.java | 5 ++- .../globalactions/GlobalActionsDialog.java | 29 ++++----------- 11 files changed, 170 insertions(+), 82 deletions(-) create mode 100644 packages/SystemUI/res/values-sw320dp-land/dimens.xml create mode 100644 packages/SystemUI/res/values-sw320dp/dimens.xml create mode 100644 packages/SystemUI/res/values-sw410dp-land/dimens.xml diff --git a/packages/SystemUI/res/layout-land/global_actions_grid.xml b/packages/SystemUI/res/layout-land/global_actions_grid.xml index 911b661d48eb0..480f5235f75a1 100644 --- a/packages/SystemUI/res/layout-land/global_actions_grid.xml +++ b/packages/SystemUI/res/layout-land/global_actions_grid.xml @@ -29,10 +29,10 @@ android:layoutDirection="ltr" android:layout_marginTop="@dimen/global_actions_grid_side_margin" android:translationZ="@dimen/global_actions_translate" - android:paddingLeft="@dimen/global_actions_grid_top_padding" - android:paddingRight="@dimen/global_actions_grid_bottom_padding" - android:paddingTop="@dimen/global_actions_grid_left_padding" - android:paddingBottom="@dimen/global_actions_grid_right_padding" + android:paddingLeft="@dimen/global_actions_grid_horizontal_padding" + android:paddingRight="@dimen/global_actions_grid_horizontal_padding" + android:paddingTop="@dimen/global_actions_grid_vertical_padding" + android:paddingBottom="@dimen/global_actions_grid_vertical_padding" android:background="?android:attr/colorBackgroundFloating" > diff --git a/packages/SystemUI/res/layout-land/global_actions_grid_seascape.xml b/packages/SystemUI/res/layout-land/global_actions_grid_seascape.xml index 669be1b40567e..4f868263226d7 100644 --- a/packages/SystemUI/res/layout-land/global_actions_grid_seascape.xml +++ b/packages/SystemUI/res/layout-land/global_actions_grid_seascape.xml @@ -23,17 +23,18 @@ @@ -44,12 +45,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" - android:layout_marginTop="@dimen/global_actions_grid_side_margin" + android:layout_marginBottom="@dimen/global_actions_grid_side_margin" android:translationZ="@dimen/global_actions_translate" - android:paddingLeft="@dimen/global_actions_grid_top_padding" - android:paddingRight="@dimen/global_actions_grid_bottom_padding" - android:paddingTop="@dimen/global_actions_grid_left_padding" - android:paddingBottom="@dimen/global_actions_grid_right_padding" + android:paddingLeft="@dimen/global_actions_grid_horizontal_padding" + android:paddingRight="@dimen/global_actions_grid_horizontal_padding" + android:paddingTop="@dimen/global_actions_grid_vertical_padding" + android:paddingBottom="@dimen/global_actions_grid_vertical_padding" android:background="?android:attr/colorBackgroundFloating" > @@ -44,10 +45,10 @@ android:layoutDirection="rtl" android:layout_marginRight="@dimen/global_actions_grid_side_margin" android:translationZ="@dimen/global_actions_translate" - android:paddingLeft="@dimen/global_actions_grid_left_padding" - android:paddingRight="@dimen/global_actions_grid_right_padding" - android:paddingTop="@dimen/global_actions_grid_top_padding" - android:paddingBottom="@dimen/global_actions_grid_bottom_padding" + android:paddingLeft="@dimen/global_actions_grid_horizontal_padding" + android:paddingRight="@dimen/global_actions_grid_horizontal_padding" + android:paddingTop="@dimen/global_actions_grid_vertical_padding" + android:paddingBottom="@dimen/global_actions_grid_vertical_padding" android:background="?android:attr/colorBackgroundFloating" > - +> diff --git a/packages/SystemUI/res/values-sw320dp-land/dimens.xml b/packages/SystemUI/res/values-sw320dp-land/dimens.xml new file mode 100644 index 0000000000000..2ec5abd673cbc --- /dev/null +++ b/packages/SystemUI/res/values-sw320dp-land/dimens.xml @@ -0,0 +1,27 @@ + + + + + + 3dp + 0dp + + 4dp + 5dp + + + diff --git a/packages/SystemUI/res/values-sw320dp/dimens.xml b/packages/SystemUI/res/values-sw320dp/dimens.xml new file mode 100644 index 0000000000000..0c2b1cc5e6791 --- /dev/null +++ b/packages/SystemUI/res/values-sw320dp/dimens.xml @@ -0,0 +1,37 @@ + + + + + + 16dp + + 0dp + 3dp + + 5dp + 4dp + 64dp + 64dp + + 18dp + 18dp + 12dp + 22dp + 4dp + + + diff --git a/packages/SystemUI/res/values-sw410dp-land/dimens.xml b/packages/SystemUI/res/values-sw410dp-land/dimens.xml new file mode 100644 index 0000000000000..61ba2d02da9e3 --- /dev/null +++ b/packages/SystemUI/res/values-sw410dp-land/dimens.xml @@ -0,0 +1,27 @@ + + + + + + 4dp + 8dp + + 8dp + 12dp + + + diff --git a/packages/SystemUI/res/values-sw410dp/dimens.xml b/packages/SystemUI/res/values-sw410dp/dimens.xml index 5ce65241c9ca4..4197eb2519fae 100644 --- a/packages/SystemUI/res/values-sw410dp/dimens.xml +++ b/packages/SystemUI/res/values-sw410dp/dimens.xml @@ -21,4 +21,22 @@ for different hardware and product builds. --> 16dp + + + 16dp + + 8dp + 4dp + + 12dp + 8dp + 72dp + 72dp + + 24dp + 24dp + 16dp + 24dp + 4dp + diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 1e1245fe0d86e..911855f016f94 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -841,26 +841,15 @@ 18dp 18dp + 120dp - - 16dp - - 4dp - 104dp - 8dp - 8dp - 4dp - 4dp - - 12dp - 8dp - 120dp - 12dp - 9dp + + 4dp + 8dp diff --git a/packages/SystemUI/src/com/android/systemui/MultiListLayout.java b/packages/SystemUI/src/com/android/systemui/MultiListLayout.java index 00ff518ce212c..8c49d56ae3488 100644 --- a/packages/SystemUI/src/com/android/systemui/MultiListLayout.java +++ b/packages/SystemUI/src/com/android/systemui/MultiListLayout.java @@ -151,7 +151,10 @@ public abstract class MultiListLayout extends LinearLayout { return null; } - interface RotationListener { + /** + * Interface to provide callbacks which trigger when this list detects a rotation. + */ + public interface RotationListener { void onRotate(int from, int to); } } diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java index 7c9b2864f7f21..3fa6035387c71 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java @@ -33,7 +33,6 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.UserInfo; -import android.content.res.Configuration; import android.database.ContentObserver; import android.graphics.Point; import android.graphics.drawable.Drawable; @@ -161,8 +160,6 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, private final ScreenshotHelper mScreenshotHelper; private final ScreenRecordHelper mScreenRecordHelper; - private int mLastRotation; - /** * @param context everything needs a context :( */ @@ -205,8 +202,6 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, mScreenshotHelper = new ScreenshotHelper(context); mScreenRecordHelper = new ScreenRecordHelper(context); - mLastRotation = RotationUtils.getRotation(mContext); - Dependency.get(ConfigurationController.class).addCallback(this); } @@ -432,15 +427,6 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, mContext.getTheme().applyStyle(mContext.getThemeResId(), true); } - @Override - public void onConfigChanged(Configuration newConfig) { - int rotation = RotationUtils.getRotation(mContext); - if (rotation != mLastRotation) { - mDialog.onRotate(); - } - mLastRotation = rotation; - } - public void destroy() { Dependency.get(ConfigurationController.class).removeCallback(this); } @@ -1540,13 +1526,7 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, return true; } }); - } - - public void onRotate() { - if (mShowing && isGridEnabled(mContext)) { - initializeLayout(); - updateList(); - } + mGlobalActionsLayout.setRotationListener(this::onRotate); } private int getGlobalActionsLayoutId(Context context) { @@ -1703,6 +1683,13 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, public void setKeyguardShowing(boolean keyguardShowing) { mKeyguardShowing = keyguardShowing; } + + public void onRotate(int from, int to) { + if (mShowing && isGridEnabled(mContext)) { + initializeLayout(); + updateList(); + } + } } /**