diff options
| author | 2024-04-10 18:00:39 +0000 | |
|---|---|---|
| committer | 2024-04-15 13:25:58 +0000 | |
| commit | 5eb75b51d380879fc765432002db1b135142e5cf (patch) | |
| tree | 4469ebcdfe61feaebd65560e233e5ae8220cafc4 | |
| parent | bab84f3277a017b25dfdd12f7688b961a8e32cd0 (diff) | |
Update screenshot shelf actions layout
- Nest the actions in the actions background.
- Round all the corners.
- Fork layouts/drawables where needed to avoid impacting unflagged
behavior.
- Use a transparent divider between actions.
- Clip to the rounded outline to make the scrollview not clip in a
rectangle.
Bug: 329659738
Test: Manual testing with adding/removing actions, scrolling
Flag: ACONFIG com.android.systemui.screenshot_shelf_ui DEVELOPMENT
Change-Id: I331f8ff689d90ae40cd0e9820ee34382df34a6ac
Merged-In: I331f8ff689d90ae40cd0e9820ee34382df34a6ac
7 files changed, 167 insertions, 29 deletions
diff --git a/packages/SystemUI/res/drawable/shelf_action_chip_background.xml b/packages/SystemUI/res/drawable/shelf_action_chip_background.xml new file mode 100644 index 000000000000..63600beff126 --- /dev/null +++ b/packages/SystemUI/res/drawable/shelf_action_chip_background.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2024 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. + --> +<ripple + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" + android:color="@color/overlay_button_ripple"> + <item android:id="@android:id/background"> + <shape android:shape="rectangle"> + <solid android:color="?androidprv:attr/materialColorSecondary"/> + <corners android:radius="10000dp"/> <!-- fully-rounded radius --> + </shape> + </item> +</ripple> diff --git a/packages/SystemUI/res/drawable/shelf_action_chip_container_background.xml b/packages/SystemUI/res/drawable/shelf_action_chip_container_background.xml new file mode 100644 index 000000000000..bb8cece9203b --- /dev/null +++ b/packages/SystemUI/res/drawable/shelf_action_chip_container_background.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2024 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. + --> +<shape + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" + android:shape="rectangle"> + <solid android:color="?androidprv:attr/materialColorSurfaceBright"/> + <corners android:radius="10000dp"/> <!-- fully-rounded radius --> +</shape> diff --git a/packages/SystemUI/res/drawable/shelf_action_chip_divider.xml b/packages/SystemUI/res/drawable/shelf_action_chip_divider.xml new file mode 100644 index 000000000000..a5b44e564157 --- /dev/null +++ b/packages/SystemUI/res/drawable/shelf_action_chip_divider.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2024 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. +--> + +<shape xmlns:android = "http://schemas.android.com/apk/res/android"> + <size + android:width = "@dimen/overlay_action_chip_margin_start" + android:height = "0dp"/> +</shape> diff --git a/packages/SystemUI/res/drawable/shelf_action_container_clipping_shape.xml b/packages/SystemUI/res/drawable/shelf_action_container_clipping_shape.xml new file mode 100644 index 000000000000..76779f9f1b2c --- /dev/null +++ b/packages/SystemUI/res/drawable/shelf_action_container_clipping_shape.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2024 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. + --> +<shape + xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <!-- We don't actually draw anything, just expressing the shape for clipping. --> + <solid android:color="#0000"/> + <corners android:radius="10000dp"/> <!-- fully-rounded radius --> +</shape> diff --git a/packages/SystemUI/res/layout/screenshot_shelf.xml b/packages/SystemUI/res/layout/screenshot_shelf.xml index eeb64bd8460e..6a5b999f5444 100644 --- a/packages/SystemUI/res/layout/screenshot_shelf.xml +++ b/packages/SystemUI/res/layout/screenshot_shelf.xml @@ -20,39 +20,37 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> - <ImageView + <FrameLayout android:id="@+id/actions_container_background" android:visibility="gone" - android:layout_height="0dp" - android:layout_width="0dp" - android:elevation="4dp" - android:background="@drawable/action_chip_container_background" - android:layout_marginStart="@dimen/overlay_action_container_margin_horizontal" - android:layout_marginBottom="@dimen/screenshot_shelf_vertical_margin" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="@+id/actions_container" - app:layout_constraintEnd_toEndOf="@+id/actions_container" - app:layout_constraintBottom_toTopOf="@id/guideline"/> - <HorizontalScrollView - android:id="@+id/actions_container" - android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/overlay_action_container_margin_horizontal" - android:paddingHorizontal="@dimen/overlay_action_container_padding_end" - android:paddingVertical="@dimen/overlay_action_container_padding_vertical" + android:layout_width="wrap_content" android:elevation="4dp" - android:scrollbars="none" - app:layout_constraintHorizontal_bias="0" - app:layout_constraintWidth_percent="1.0" - app:layout_constraintWidth_max="wrap" + android:background="@drawable/shelf_action_chip_container_background" + android:layout_marginHorizontal="@dimen/overlay_action_container_margin_horizontal" + android:layout_marginBottom="@dimen/screenshot_shelf_vertical_margin" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toBottomOf="@id/actions_container_background"> - <LinearLayout - android:id="@+id/screenshot_actions" + app:layout_constraintBottom_toTopOf="@id/guideline" + > + <HorizontalScrollView + android:id="@+id/actions_container" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - </HorizontalScrollView> + android:layout_height="wrap_content" + android:layout_marginVertical="@dimen/overlay_action_container_padding_vertical" + android:layout_marginHorizontal="@dimen/overlay_action_chip_margin_start" + android:background="@drawable/shelf_action_container_clipping_shape" + android:clipToOutline="true" + android:scrollbars="none"> + <LinearLayout + android:id="@+id/screenshot_actions" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:showDividers="middle" + android:divider="@drawable/shelf_action_chip_divider" + android:animateLayoutChanges="true" + /> + </HorizontalScrollView> + </FrameLayout> <View android:id="@+id/screenshot_preview_border" android:layout_width="0dp" @@ -66,7 +64,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/screenshot_preview" app:layout_constraintEnd_toEndOf="@id/screenshot_preview" - app:layout_constraintBottom_toTopOf="@id/actions_container"/> + app:layout_constraintBottom_toTopOf="@id/actions_container_background"/> <ImageView android:id="@+id/screenshot_preview" android:layout_width="@dimen/overlay_x_scale" diff --git a/packages/SystemUI/res/layout/shelf_action_chip.xml b/packages/SystemUI/res/layout/shelf_action_chip.xml new file mode 100644 index 000000000000..709c80d07088 --- /dev/null +++ b/packages/SystemUI/res/layout/shelf_action_chip.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2024 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. + --> +<com.android.systemui.screenshot.OverlayActionChip + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" + android:id="@+id/overlay_action_chip" + android:theme="@style/FloatingOverlay" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:gravity="center" + android:alpha="0.0"> + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingVertical="@dimen/overlay_action_chip_padding_vertical" + android:background="@drawable/shelf_action_chip_background" + android:gravity="center"> + <ImageView + android:id="@+id/overlay_action_chip_icon" + android:tint="?androidprv:attr/materialColorOnSecondary" + android:layout_width="@dimen/overlay_action_chip_icon_size" + android:layout_height="@dimen/overlay_action_chip_icon_size"/> + <TextView + android:id="@+id/overlay_action_chip_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@*android:string/config_headlineFontFamilyMedium" + android:textSize="@dimen/overlay_action_chip_text_size" + android:textColor="?androidprv:attr/materialColorOnSecondary"/> + </LinearLayout> +</com.android.systemui.screenshot.OverlayActionChip> diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ScreenshotShelfViewBinder.kt b/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ScreenshotShelfViewBinder.kt index d9a51029d346..5f835b3697a1 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ScreenshotShelfViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ScreenshotShelfViewBinder.kt @@ -95,7 +95,7 @@ object ScreenshotShelfViewBinder { // mean that the new action must be inserted here. val actionButton = layoutInflater.inflate( - R.layout.overlay_action_chip, + R.layout.shelf_action_chip, actionsContainer, false ) |