Fix shadow and animation clipping for Global Actions Dialog.

Fixes: 132637931
Test: Manual testing of animations in landscape/seascape/portrait for both column and grid GAD.
Change-Id: I4870a0ec9c1c07ae6eee6c3d0943a19252a25241
This commit is contained in:
Aran Ink
2019-05-14 15:49:00 -04:00
parent f4744c686f
commit a2fb824529
8 changed files with 36 additions and 13 deletions

View File

@@ -5,19 +5,21 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:clipToPadding="false"
android:theme="@style/qs_theme"
android:paddingLeft="@dimen/global_actions_top_padding"
android:gravity="right"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingRight="@dimen/global_actions_grid_container_shadow_offset"
android:layout_marginRight="@dimen/global_actions_grid_container_negative_shadow_offset"
>
<LinearLayout
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="top|right"
android:padding="0dp"
android:orientation="vertical"
android:layout_marginRight="@dimen/global_actions_grid_container_bottom_margin"
android:clipChildren="false"
android:clipToPadding="false"
>
<!-- Grid of action items -->
<com.android.systemui.globalactions.ListGridLayout

View File

@@ -5,11 +5,12 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:clipToPadding="false"
android:theme="@style/qs_theme"
android:gravity="left"
android:paddingRight="@dimen/global_actions_top_padding"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingLeft="@dimen/global_actions_grid_container_shadow_offset"
android:layout_marginLeft="@dimen/global_actions_grid_container_negative_shadow_offset"
>
<LinearLayout
android:layout_height="match_parent"
@@ -17,6 +18,8 @@
android:gravity="bottom|left"
android:padding="0dp"
android:orientation="vertical"
android:clipChildren="false"
android:clipToPadding="false"
android:layout_marginLeft="@dimen/global_actions_grid_container_bottom_margin"
>
<!-- For separated items-->

View File

@@ -5,17 +5,20 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:clipToPadding="false"
android:theme="@style/qs_theme"
android:gravity="bottom"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingBottom="@dimen/global_actions_grid_container_shadow_offset"
android:layout_marginBottom="@dimen/global_actions_grid_container_negative_shadow_offset"
>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="bottom | right"
android:padding="0dp"
android:layoutDirection="ltr"
android:clipChildren="false"
android:clipToPadding="false"
android:layout_marginBottom="@dimen/global_actions_grid_container_bottom_margin"
>
<!-- For separated items-->

View File

@@ -16,8 +16,6 @@
-->
<resources>
<!-- Global actions grid -->
<dimen name="global_actions_grid_container_bottom_margin">4dp</dimen>
<dimen name="global_actions_grid_vertical_padding">0dp</dimen>
<dimen name="global_actions_grid_horizontal_padding">3dp</dimen>

View File

@@ -16,8 +16,6 @@
-->
<resources>
<!-- Global actions grid -->
<dimen name="global_actions_grid_container_bottom_margin">4dp</dimen>
<dimen name="global_actions_grid_vertical_padding">0dp</dimen>
<dimen name="global_actions_grid_horizontal_padding">3dp</dimen>

View File

@@ -23,8 +23,6 @@
<dimen name="qs_detail_items_padding_top">16dp</dimen>
<!-- Global actions grid -->
<dimen name="global_actions_grid_container_bottom_margin">4dp</dimen>
<dimen name="global_actions_grid_vertical_padding">8dp</dimen>
<dimen name="global_actions_grid_horizontal_padding">4dp</dimen>

View File

@@ -944,6 +944,12 @@
<!-- Global actions grid layout -->
<dimen name="global_actions_grid_side_margin">4dp</dimen>
<dimen name="global_actions_grid_container_bottom_margin">4dp</dimen>
<!-- Used to workaround a bug where shadows are clipped during animations by expanding
the bounds of the parent view. -->
<dimen name="global_actions_grid_container_shadow_offset">20dp</dimen>
<dimen name="global_actions_grid_container_negative_shadow_offset">-20dp</dimen>
<!-- The maximum offset in either direction that elements are moved horizontally to prevent
burn-in on AOD. -->

View File

@@ -42,6 +42,8 @@ public class GlobalActionsGridLayout extends GlobalActionsLayout {
listView.setReverseSublists(shouldReverseSublists());
listView.setReverseItems(shouldReverseListItems());
listView.setSwapRowsAndColumns(shouldSwapRowsAndColumns());
fixNavBarClipping();
}
@Override
@@ -73,6 +75,19 @@ public class GlobalActionsGridLayout extends GlobalActionsLayout {
}
}
/**
* Allows the dialog to clip over the navbar, which prevents shadows and animations from being
* cut off.
*/
private void fixNavBarClipping() {
ViewGroup parent = (ViewGroup) this.getParent();
ViewGroup parentParent = (ViewGroup) parent.getParent();
parent.setClipChildren(false);
parent.setClipToPadding(false);
parentParent.setClipChildren(false);
parentParent.setClipToPadding(false);
}
@Override
protected ListGridLayout getListView() {
return (ListGridLayout) super.getListView();