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
This commit is contained in:
@@ -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"
|
||||
>
|
||||
<LinearLayout
|
||||
@@ -61,17 +61,18 @@
|
||||
<!-- For separated items-->
|
||||
<LinearLayout
|
||||
android:id="@+id/separated_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/global_actions_grid_side_margin"
|
||||
android:layout_marginBottom="@dimen/global_actions_grid_side_margin"
|
||||
android:paddingTop="@dimen/global_actions_grid_left_padding"
|
||||
android:paddingLeft="@dimen/global_actions_grid_top_padding"
|
||||
android:paddingBottom="@dimen/global_actions_grid_right_padding"
|
||||
android:paddingRight="@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:orientation="horizontal"
|
||||
android:layoutDirection="ltr"
|
||||
android:background="?android:attr/colorBackgroundFloating"
|
||||
android:gravity="center"
|
||||
android:translationZ="@dimen/global_actions_translate"
|
||||
/>
|
||||
|
||||
|
||||
@@ -23,17 +23,18 @@
|
||||
<LinearLayout
|
||||
android:id="@+id/separated_button"
|
||||
android:layout_gravity="top|left"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/global_actions_grid_side_margin"
|
||||
android:layout_marginBottom="@dimen/global_actions_grid_side_margin"
|
||||
android:paddingTop="@dimen/global_actions_grid_left_padding"
|
||||
android:paddingLeft="@dimen/global_actions_grid_top_padding"
|
||||
android:paddingBottom="@dimen/global_actions_grid_right_padding"
|
||||
android:paddingRight="@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:orientation="horizontal"
|
||||
android:layoutDirection="rtl"
|
||||
android:background="?android:attr/colorBackgroundFloating"
|
||||
android:gravity="center"
|
||||
android:translationZ="@dimen/global_actions_translate"
|
||||
/>
|
||||
|
||||
@@ -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"
|
||||
>
|
||||
<LinearLayout
|
||||
|
||||
@@ -23,15 +23,16 @@
|
||||
<LinearLayout
|
||||
android:id="@+id/separated_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="@dimen/global_actions_grid_side_margin"
|
||||
android:layout_marginRight="@dimen/global_actions_grid_side_margin"
|
||||
android:paddingTop="@dimen/global_actions_grid_top_padding"
|
||||
android:paddingLeft="@dimen/global_actions_grid_left_padding"
|
||||
android:paddingBottom="@dimen/global_actions_grid_bottom_padding"
|
||||
android:paddingRight="@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:orientation="vertical"
|
||||
android:background="?android:attr/colorBackgroundFloating"
|
||||
android:gravity="center"
|
||||
android:translationZ="@dimen/global_actions_translate"
|
||||
/>
|
||||
|
||||
@@ -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"
|
||||
>
|
||||
<LinearLayout
|
||||
|
||||
@@ -18,46 +18,43 @@
|
||||
work around this for now with LinearLayouts. -->
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:gravity="center"
|
||||
android:layout_width="@dimen/global_actions_grid_item_width"
|
||||
android:layout_height="@dimen/global_actions_grid_item_height"
|
||||
android:gravity="top|center_horizontal"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginTop="@dimen/global_actions_grid_item_vertical_margin"
|
||||
android:layout_marginBottom="@dimen/global_actions_grid_item_vertical_margin"
|
||||
android:layout_marginLeft="@dimen/global_actions_grid_item_side_margin"
|
||||
android:layout_marginRight="@dimen/global_actions_grid_item_side_margin"
|
||||
android:paddingEnd="4dip"
|
||||
android:paddingStart="4dip">
|
||||
|
||||
>
|
||||
<ImageView
|
||||
android:id="@*android:id/icon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="@dimen/global_actions_grid_item_icon_width"
|
||||
android:layout_height="@dimen/global_actions_grid_item_icon_height"
|
||||
android:layout_marginTop="@dimen/global_actions_grid_item_icon_top_margin"
|
||||
android:layout_marginBottom="@dimen/global_actions_grid_item_icon_bottom_margin"
|
||||
android:layout_marginLeft="@dimen/global_actions_grid_item_icon_side_margin"
|
||||
android:layout_marginRight="@dimen/global_actions_grid_item_icon_side_margin"
|
||||
android:scaleType="center"
|
||||
android:alpha="?android:attr/primaryContentAlpha"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@*android:id/message"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="top|center_horizontal"
|
||||
android:paddingTop="10dp"
|
||||
android:gravity="center"
|
||||
android:textSize="12sp"
|
||||
android:textSize="12dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:singleLine="true"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:visibility="gone"
|
||||
android:id="@*android:id/status"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="top|center_horizontal"
|
||||
android:gravity="center"
|
||||
android:textColor="?android:attr/textColorTertiary"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:singleLine="true"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
27
packages/SystemUI/res/values-sw320dp-land/dimens.xml
Normal file
27
packages/SystemUI/res/values-sw320dp-land/dimens.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2019 The Android Open Source Project
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License
|
||||
-->
|
||||
<resources>
|
||||
|
||||
<!-- Global actions grid -->
|
||||
<dimen name="global_actions_grid_vertical_padding">3dp</dimen>
|
||||
<dimen name="global_actions_grid_horizontal_padding">0dp</dimen>
|
||||
|
||||
<dimen name="global_actions_grid_item_side_margin">4dp</dimen>
|
||||
<dimen name="global_actions_grid_item_vertical_margin">5dp</dimen>
|
||||
|
||||
</resources>
|
||||
|
||||
37
packages/SystemUI/res/values-sw320dp/dimens.xml
Normal file
37
packages/SystemUI/res/values-sw320dp/dimens.xml
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2019 The Android Open Source Project
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License
|
||||
-->
|
||||
<resources>
|
||||
|
||||
<!-- Global actions grid -->
|
||||
<dimen name="global_actions_grid_container_bottom_margin">16dp</dimen>
|
||||
|
||||
<dimen name="global_actions_grid_vertical_padding">0dp</dimen>
|
||||
<dimen name="global_actions_grid_horizontal_padding">3dp</dimen>
|
||||
|
||||
<dimen name="global_actions_grid_item_side_margin">5dp</dimen>
|
||||
<dimen name="global_actions_grid_item_vertical_margin">4dp</dimen>
|
||||
<dimen name="global_actions_grid_item_width">64dp</dimen>
|
||||
<dimen name="global_actions_grid_item_height">64dp</dimen>
|
||||
|
||||
<dimen name="global_actions_grid_item_icon_width">18dp</dimen>
|
||||
<dimen name="global_actions_grid_item_icon_height">18dp</dimen>
|
||||
<dimen name="global_actions_grid_item_icon_top_margin">12dp</dimen>
|
||||
<dimen name="global_actions_grid_item_icon_side_margin">22dp</dimen>
|
||||
<dimen name="global_actions_grid_item_icon_bottom_margin">4dp</dimen>
|
||||
|
||||
</resources>
|
||||
|
||||
27
packages/SystemUI/res/values-sw410dp-land/dimens.xml
Normal file
27
packages/SystemUI/res/values-sw410dp-land/dimens.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2019 The Android Open Source Project
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License
|
||||
-->
|
||||
<resources>
|
||||
|
||||
<!-- Global actions grid -->
|
||||
<dimen name="global_actions_grid_vertical_padding">4dp</dimen>
|
||||
<dimen name="global_actions_grid_horizontal_padding">8dp</dimen>
|
||||
|
||||
<dimen name="global_actions_grid_item_side_margin">8dp</dimen>
|
||||
<dimen name="global_actions_grid_item_vertical_margin">12dp</dimen>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -21,4 +21,22 @@
|
||||
for different hardware and product builds. -->
|
||||
<resources>
|
||||
<dimen name="qs_detail_items_padding_top">16dp</dimen>
|
||||
|
||||
<!-- Global actions grid -->
|
||||
<dimen name="global_actions_grid_container_bottom_margin">16dp</dimen>
|
||||
|
||||
<dimen name="global_actions_grid_vertical_padding">8dp</dimen>
|
||||
<dimen name="global_actions_grid_horizontal_padding">4dp</dimen>
|
||||
|
||||
<dimen name="global_actions_grid_item_side_margin">12dp</dimen>
|
||||
<dimen name="global_actions_grid_item_vertical_margin">8dp</dimen>
|
||||
<dimen name="global_actions_grid_item_width">72dp</dimen>
|
||||
<dimen name="global_actions_grid_item_height">72dp</dimen>
|
||||
|
||||
<dimen name="global_actions_grid_item_icon_width">24dp</dimen>
|
||||
<dimen name="global_actions_grid_item_icon_height">24dp</dimen>
|
||||
<dimen name="global_actions_grid_item_icon_top_margin">16dp</dimen>
|
||||
<dimen name="global_actions_grid_item_icon_side_margin">24dp</dimen>
|
||||
<dimen name="global_actions_grid_item_icon_bottom_margin">4dp</dimen>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -841,26 +841,15 @@
|
||||
<dimen name="default_gear_space">18dp</dimen>
|
||||
<dimen name="cell_overlay_padding">18dp</dimen>
|
||||
|
||||
<!-- Global actions power menu -->
|
||||
<dimen name="global_actions_panel_width">120dp</dimen>
|
||||
|
||||
<dimen name="global_actions_grid_container_bottom_margin">16dp</dimen>
|
||||
|
||||
<dimen name="global_actions_grid_side_margin">4dp</dimen>
|
||||
<dimen name="global_actions_grid_separated_panel_width">104dp</dimen>
|
||||
<dimen name="global_actions_grid_top_padding">8dp</dimen>
|
||||
<dimen name="global_actions_grid_bottom_padding">8dp</dimen>
|
||||
<dimen name="global_actions_grid_left_padding">4dp</dimen>
|
||||
<dimen name="global_actions_grid_right_padding">4dp</dimen>
|
||||
|
||||
<dimen name="global_actions_grid_item_side_margin">12dp</dimen>
|
||||
<dimen name="global_actions_grid_item_vertical_margin">8dp</dimen>
|
||||
|
||||
<dimen name="global_actions_top_padding">120dp</dimen>
|
||||
|
||||
<dimen name="global_actions_padding">12dp</dimen>
|
||||
|
||||
<dimen name="global_actions_translate">9dp</dimen>
|
||||
|
||||
<!-- Global actions grid layout -->
|
||||
<dimen name="global_actions_grid_side_margin">4dp</dimen>
|
||||
|
||||
<!-- The maximum offset in either direction that elements are moved horizontally to prevent
|
||||
burn-in on AOD. -->
|
||||
<dimen name="burn_in_prevention_offset_x">8dp</dimen>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user