From b8ca4b8428352d3658775fa93ba0bbb897522ad4 Mon Sep 17 00:00:00 2001 From: Beth Thibodeau Date: Fri, 15 Jan 2021 13:07:55 -0500 Subject: [PATCH] Update media controls layout Changes to match S mocks - corner radius to match notifications - solid background for device chip - bigger album art By default this only shows the icon for app/device, but this can be changed with flags: adb shell setprop persist.sysui.qs_media_show_app_name true adb shell setprop persist.sysui.qs_media_show_device_name true adb shell am crash com.android.systemui Bug: 176177555 Test: visual Test: atest MediaControlPanelTest Change-Id: I76c3130df252baee3f5d3009f9098f77bf115f3e --- .../drawable/qs_media_seamless_background.xml | 5 +- .../res/drawable/qs_media_background.xml | 2 +- packages/SystemUI/res/layout/media_view.xml | 69 +++++++------- packages/SystemUI/res/values/dimens.xml | 3 +- packages/SystemUI/res/xml/media_collapsed.xml | 91 ++++++++++--------- packages/SystemUI/res/xml/media_expanded.xml | 67 +++++++------- .../systemui/media/MediaControlPanel.java | 13 +++ .../src/com/android/systemui/qs/QSPanel.java | 7 +- 8 files changed, 144 insertions(+), 113 deletions(-) diff --git a/packages/SystemUI/res-keyguard/drawable/qs_media_seamless_background.xml b/packages/SystemUI/res-keyguard/drawable/qs_media_seamless_background.xml index 3790378ff3aeb..8e3768697f6af 100644 --- a/packages/SystemUI/res-keyguard/drawable/qs_media_seamless_background.xml +++ b/packages/SystemUI/res-keyguard/drawable/qs_media_seamless_background.xml @@ -17,9 +17,8 @@ - - + + diff --git a/packages/SystemUI/res/drawable/qs_media_background.xml b/packages/SystemUI/res/drawable/qs_media_background.xml index 656d2e4a33ff8..6ed3a0aed091d 100644 --- a/packages/SystemUI/res/drawable/qs_media_background.xml +++ b/packages/SystemUI/res/drawable/qs_media_background.xml @@ -17,4 +17,4 @@ \ No newline at end of file + systemui:cornerRadius="@dimen/notification_corner_radius" /> \ No newline at end of file diff --git a/packages/SystemUI/res/layout/media_view.xml b/packages/SystemUI/res/layout/media_view.xml index 170f2c4e0bea9..6b4270531d0b1 100644 --- a/packages/SystemUI/res/layout/media_view.xml +++ b/packages/SystemUI/res/layout/media_view.xml @@ -64,7 +64,7 @@ + app:layout_constraintHorizontal_bias="0" /> + android:layout_height="@dimen/qs_media_album_size" + android:layout_gravity="center_vertical" /> - - - - + + android:foreground="@drawable/qs_media_seamless_background" + android:background="@drawable/qs_media_light_source" + android:orientation="horizontal" + android:padding="6dp" + android:contentDescription="@string/quick_settings_media_device_label"> + + + + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_margin="6dp" /> 8dp - 350dp 16dp 16dp - 52dp + 120dp 16dp 10dp @dimen/qs_media_icon_size diff --git a/packages/SystemUI/res/xml/media_collapsed.xml b/packages/SystemUI/res/xml/media_collapsed.xml index ee958f28c51b1..f834d6df15c2a 100644 --- a/packages/SystemUI/res/xml/media_collapsed.xml +++ b/packages/SystemUI/res/xml/media_collapsed.xml @@ -22,36 +22,39 @@ android:layout_width="@dimen/qs_media_icon_size" android:layout_height="@dimen/qs_media_icon_size" android:layout_marginStart="18dp" - app:layout_constraintTop_toTopOf="@id/app_name" - app:layout_constraintBottom_toBottomOf="@id/app_name" - app:layout_constraintStart_toStartOf="parent" + android:layout_marginTop="@dimen/qs_media_panel_outer_padding" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toEndOf="@id/album_art" /> @@ -64,22 +67,23 @@ android:alpha="0.5" android:visibility="gone" app:layout_constraintHorizontal_bias="1" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="@id/app_name" - app:layout_constraintBottom_toBottomOf="@id/app_name" + app:layout_constraintTop_toTopOf="@id/icon" + app:layout_constraintBottom_toBottomOf="@id/icon" app:layout_constraintStart_toEndOf="@id/center_vertical_guideline" + app:layout_constraintEnd_toEndOf="parent" /> @@ -87,13 +91,14 @@ android:id="@+id/header_title" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="17dp" - android:layout_marginStart="16dp" + android:layout_marginTop="@dimen/qqs_media_spacing" + android:layout_marginStart="@dimen/qqs_media_spacing" + android:layout_marginEnd="@dimen/qs_media_panel_outer_padding" app:layout_constrainedWidth="true" - app:layout_constraintTop_toBottomOf="@id/app_name" + app:layout_constraintTop_toBottomOf="@id/icon" app:layout_constraintBottom_toTopOf="@id/header_artist" app:layout_constraintStart_toEndOf="@id/album_art" - app:layout_constraintEnd_toStartOf="@id/media_action_barrier" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0"/> @@ -102,12 +107,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="3dp" - android:layout_marginBottom="24dp" + android:layout_marginEnd="@dimen/qs_media_panel_outer_padding" + android:layout_marginBottom="@dimen/qqs_media_spacing" app:layout_constrainedWidth="true" app:layout_constraintTop_toBottomOf="@id/header_title" app:layout_constraintStart_toStartOf="@id/header_title" - app:layout_constraintEnd_toStartOf="@id/media_action_barrier" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0"/> @@ -140,15 +145,15 @@ android:id="@+id/action0" android:layout_width="48dp" android:layout_height="48dp" - android:layout_marginStart="4dp" + android:layout_marginStart="@dimen/qqs_media_spacing" android:layout_marginEnd="4dp" - android:layout_marginTop="18dp" + android:layout_marginBottom="@dimen/qs_media_panel_outer_padding" android:visibility="gone" app:layout_constraintHorizontal_chainStyle="packed" - app:layout_constraintTop_toBottomOf="@id/app_name" + app:layout_constraintTop_toBottomOf="@id/header_artist" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@id/action1" - app:layout_constraintHorizontal_bias="1" + app:layout_constraintHorizontal_bias="0" > @@ -158,8 +163,9 @@ android:layout_height="48dp" android:layout_marginStart="4dp" android:layout_marginEnd="4dp" - android:layout_marginTop="18dp" - app:layout_constraintTop_toBottomOf="@id/app_name" + android:layout_marginBottom="@dimen/qs_media_panel_outer_padding" + app:layout_constraintTop_toBottomOf="@id/header_artist" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/action0" app:layout_constraintRight_toLeftOf="@id/action2" > @@ -171,8 +177,9 @@ android:layout_height="48dp" android:layout_marginStart="4dp" android:layout_marginEnd="4dp" - android:layout_marginTop="18dp" - app:layout_constraintTop_toBottomOf="@id/app_name" + android:layout_marginBottom="@dimen/qs_media_panel_outer_padding" + app:layout_constraintTop_toBottomOf="@id/header_artist" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/action1" app:layout_constraintRight_toLeftOf="@id/action3" > @@ -184,8 +191,9 @@ android:layout_height="48dp" android:layout_marginStart="4dp" android:layout_marginEnd="4dp" - android:layout_marginTop="18dp" - app:layout_constraintTop_toBottomOf="@id/app_name" + android:layout_marginBottom="@dimen/qs_media_panel_outer_padding" + app:layout_constraintTop_toBottomOf="@id/header_artist" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/action2" app:layout_constraintRight_toLeftOf="@id/action4" > @@ -196,11 +204,12 @@ android:layout_width="48dp" android:layout_height="48dp" android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginEnd="@dimen/qs_media_panel_outer_padding" android:visibility="gone" - android:layout_marginTop="18dp" + android:layout_marginBottom="@dimen/qs_media_panel_outer_padding" app:layout_constraintHorizontal_chainStyle="packed" - app:layout_constraintTop_toBottomOf="@id/app_name" + app:layout_constraintTop_toBottomOf="@id/header_artist" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/action3" app:layout_constraintRight_toRightOf="parent" app:layout_constraintHorizontal_bias="0" diff --git a/packages/SystemUI/res/xml/media_expanded.xml b/packages/SystemUI/res/xml/media_expanded.xml index d5a02c2d39d5e..d89e0eb4df630 100644 --- a/packages/SystemUI/res/xml/media_expanded.xml +++ b/packages/SystemUI/res/xml/media_expanded.xml @@ -22,36 +22,39 @@ android:layout_width="@dimen/qs_media_icon_size" android:layout_height="@dimen/qs_media_icon_size" android:layout_marginStart="18dp" - app:layout_constraintTop_toTopOf="@id/app_name" - app:layout_constraintBottom_toBottomOf="@id/app_name" - app:layout_constraintStart_toStartOf="parent" + android:layout_marginTop="@dimen/qs_media_panel_outer_padding" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toEndOf="@id/album_art" /> @@ -63,20 +66,21 @@ android:layout_marginStart="@dimen/qs_center_guideline_padding" android:alpha="0.5" android:visibility="gone" - app:layout_constraintTop_toTopOf="@id/app_name" - app:layout_constraintBottom_toBottomOf="@id/app_name" + app:layout_constraintHorizontal_bias="1" + app:layout_constraintTop_toTopOf="@id/icon" + app:layout_constraintBottom_toBottomOf="@id/icon" app:layout_constraintStart_toEndOf="@id/center_vertical_guideline" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="1" /> @@ -85,11 +89,11 @@ android:id="@+id/header_title" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginTop="@dimen/qqs_media_spacing" + android:layout_marginStart="@dimen/qqs_media_spacing" android:layout_marginEnd="@dimen/qs_media_panel_outer_padding" - android:layout_marginTop="17dp" - android:layout_marginStart="16dp" app:layout_constrainedWidth="true" - app:layout_constraintTop_toBottomOf="@+id/app_name" + app:layout_constraintTop_toBottomOf="@+id/icon" app:layout_constraintStart_toEndOf="@id/album_art" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0"/> @@ -100,6 +104,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/qs_media_panel_outer_padding" + android:layout_marginBottom="@dimen/qqs_media_spacing" android:layout_marginTop="3dp" app:layout_constrainedWidth="true" app:layout_constraintTop_toBottomOf="@id/header_title" @@ -112,7 +117,7 @@ android:id="@+id/media_progress_bar" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginTop="3dp" + android:layout_marginTop="35dp" app:layout_constraintTop_toBottomOf="@id/header_artist" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -122,7 +127,7 @@ android:id="@+id/notification_media_progress_time" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginTop="38dp" + android:layout_marginTop="70dp" android:layout_marginEnd="@dimen/qs_media_panel_outer_padding" android:layout_marginStart="@dimen/qs_media_panel_outer_padding" app:layout_constraintTop_toBottomOf="@id/header_artist" @@ -135,13 +140,12 @@ android:layout_width="48dp" android:layout_height="48dp" android:layout_marginTop="5dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginStart="@dimen/qs_media_panel_outer_padding" android:layout_marginBottom="@dimen/qs_media_panel_outer_padding" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@id/action1" - app:layout_constraintTop_toBottomOf="@id/notification_media_progress_time" + app:layout_constraintTop_toBottomOf="@id/media_progress_bar" app:layout_constraintBottom_toBottomOf="parent"> @@ -155,6 +159,7 @@ app:layout_constraintLeft_toRightOf="@id/action0" app:layout_constraintRight_toLeftOf="@id/action2" app:layout_constraintTop_toTopOf="@id/action0" + app:layout_constraintTop_toBottomOf="@id/media_progress_bar" app:layout_constraintBottom_toBottomOf="parent"> @@ -167,7 +172,7 @@ android:layout_marginBottom="@dimen/qs_media_panel_outer_padding" app:layout_constraintLeft_toRightOf="@id/action1" app:layout_constraintRight_toLeftOf="@id/action3" - app:layout_constraintTop_toTopOf="@id/action0" + app:layout_constraintTop_toBottomOf="@id/media_progress_bar" app:layout_constraintBottom_toBottomOf="parent"> @@ -177,10 +182,10 @@ android:layout_height="48dp" android:layout_marginStart="4dp" android:layout_marginEnd="4dp" + android:layout_marginBottom="@dimen/qs_media_panel_outer_padding" app:layout_constraintLeft_toRightOf="@id/action2" app:layout_constraintRight_toLeftOf="@id/action4" - app:layout_constraintTop_toTopOf="@id/action0" - android:layout_marginBottom="@dimen/qs_media_panel_outer_padding" + app:layout_constraintTop_toBottomOf="@id/media_progress_bar" app:layout_constraintBottom_toBottomOf="parent"> @@ -189,12 +194,12 @@ android:layout_width="48dp" android:layout_height="48dp" android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginEnd="@dimen/qs_media_panel_outer_padding" android:layout_marginBottom="@dimen/qs_media_panel_outer_padding" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintLeft_toRightOf="@id/action3" app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="@id/action0" + app:layout_constraintTop_toBottomOf="@id/media_progress_bar" app:layout_constraintBottom_toBottomOf="parent"> diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java index c18a6a45e2861..743ac86cbdcb6 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java @@ -29,6 +29,7 @@ import android.graphics.drawable.Icon; import android.media.session.MediaController; import android.media.session.MediaSession; import android.media.session.PlaybackState; +import android.os.SystemProperties; import android.util.Log; import android.view.View; import android.view.ViewOutlineProvider; @@ -64,6 +65,11 @@ public class MediaControlPanel { private static final String TAG = "MediaControlPanel"; private static final float DISABLED_ALPHA = 0.38f; + private final boolean mShowAppName = SystemProperties.getBoolean( + "persist.sysui.qs_media_show_app_name", false); + private final boolean mShowDeviceName = SystemProperties.getBoolean( + "persist.sysui.qs_media_show_device_name", false); + private static final Intent SETTINGS_INTENT = new Intent(ACTION_MEDIA_CONTROLS_SETTINGS); // Button IDs for QS controls @@ -265,6 +271,9 @@ public class MediaControlPanel { // App title TextView appName = mViewHolder.getAppName(); appName.setText(data.getApp()); + appName.setVisibility(mShowAppName ? View.VISIBLE : View.GONE); + setVisibleAndAlpha(collapsedSet, R.id.app_name, mShowAppName); + setVisibleAndAlpha(expandedSet, R.id.app_name, mShowAppName); // Artist name TextView artistText = mViewHolder.getArtistText(); @@ -277,6 +286,10 @@ public class MediaControlPanel { mViewHolder.getSeamless().setOnClickListener(v -> { mMediaOutputDialogFactory.create(data.getPackageName(), true); }); + TextView mDeviceName = mViewHolder.getSeamlessText(); + mDeviceName.setVisibility(mShowDeviceName ? View.VISIBLE : View.GONE); + setVisibleAndAlpha(collapsedSet, R.id.media_seamless_text, mShowDeviceName); + setVisibleAndAlpha(expandedSet, R.id.media_seamless_text, mShowDeviceName); ImageView iconView = mViewHolder.getSeamlessIcon(); TextView deviceName = mViewHolder.getSeamlessText(); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 65f174c508e89..2f506245dd7cd 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -681,11 +681,12 @@ public class QSPanel extends LinearLayout implements Tunable { */ protected void updateMediaHostContentMargins(ViewGroup mediaHostView) { if (mUsingMediaPlayer) { - int marginStart = mContentMarginStart; + int marginStart = 0; + int marginEnd = 0; if (mUsingHorizontalLayout) { - marginStart = 0; + marginEnd = mContentMarginEnd; } - updateMargins(mediaHostView, marginStart, mContentMarginEnd); + updateMargins(mediaHostView, marginStart, marginEnd); } }