Loading packages/SystemUI/res/layout/media_smartspace_recommendations.xml +61 −6 Original line number Diff line number Diff line Loading @@ -42,10 +42,10 @@ android:id="@+id/media_cover1_container" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@+id/media_title1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/media_cover2_container" android:layout_marginEnd="@dimen/qs_media_rec_album_margin" android:layout_marginEnd="@dimen/qs_media_rec_album_side_margin" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintVertical_bias="0.5" Loading @@ -63,16 +63,33 @@ android:scaleType="centerCrop"/> </FrameLayout> <!-- TODO(b/223603970): Add title and subtitle below each album cover. --> <TextView android:id="@+id/media_title1" style="@style/MediaPlayer.Recommendation.Text.Title" app:layout_constraintStart_toStartOf="@+id/media_cover1_container" app:layout_constraintEnd_toEndOf="@+id/media_cover1_container" app:layout_constraintTop_toBottomOf="@+id/media_cover1_container" app:layout_constraintBottom_toTopOf="@+id/media_subtitle1" /> <TextView android:id="@+id/media_subtitle1" style="@style/MediaPlayer.Recommendation.Text.Subtitle" app:layout_constraintStart_toStartOf="@+id/media_cover1_container" app:layout_constraintEnd_toEndOf="@+id/media_cover1_container" app:layout_constraintTop_toBottomOf="@+id/media_title1" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" /> <FrameLayout android:id="@+id/media_cover2_container" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@id/media_title2" app:layout_constraintStart_toEndOf="@id/media_cover1_container" app:layout_constraintEnd_toStartOf="@id/media_cover3_container" android:layout_marginEnd="@dimen/qs_media_rec_album_margin" android:layout_marginEnd="@dimen/qs_media_rec_album_side_margin" app:layout_constraintVertical_bias="0.5" > <ImageView Loading @@ -86,11 +103,30 @@ android:scaleType="centerCrop"/> </FrameLayout> <TextView android:id="@+id/media_title2" style="@style/MediaPlayer.Recommendation.Text.Title" app:layout_constraintStart_toStartOf="@+id/media_cover2_container" app:layout_constraintEnd_toEndOf="@+id/media_cover2_container" app:layout_constraintTop_toBottomOf="@+id/media_cover2_container" app:layout_constraintBottom_toTopOf="@+id/media_subtitle2" /> <TextView android:id="@+id/media_subtitle2" style="@style/MediaPlayer.Recommendation.Text.Subtitle" app:layout_constraintStart_toStartOf="@+id/media_cover2_container" app:layout_constraintEnd_toEndOf="@+id/media_cover2_container" app:layout_constraintTop_toBottomOf="@+id/media_title2" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" /> <FrameLayout android:id="@+id/media_cover3_container" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@id/media_title3" app:layout_constraintStart_toEndOf="@id/media_cover2_container" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="@dimen/qs_media_padding" Loading @@ -107,6 +143,25 @@ android:scaleType="centerCrop"/> </FrameLayout> <TextView android:id="@+id/media_title3" style="@style/MediaPlayer.Recommendation.Text.Title" app:layout_constraintStart_toStartOf="@+id/media_cover3_container" app:layout_constraintEnd_toEndOf="@+id/media_cover3_container" app:layout_constraintTop_toBottomOf="@+id/media_cover3_container" app:layout_constraintBottom_toTopOf="@+id/media_subtitle3" /> <TextView android:id="@+id/media_subtitle3" style="@style/MediaPlayer.Recommendation.Text.Subtitle" app:layout_constraintStart_toStartOf="@+id/media_cover3_container" app:layout_constraintEnd_toEndOf="@+id/media_cover3_container" app:layout_constraintTop_toBottomOf="@+id/media_title3" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" /> <!-- Long press menu --> <TextView android:layout_width="match_parent" Loading packages/SystemUI/res/values/dimens.xml +2 −1 Original line number Diff line number Diff line Loading @@ -980,7 +980,8 @@ <!-- Size of Smartspace media recommendations cards in the QSPanel carousel --> <dimen name="qs_media_rec_album_size">88dp</dimen> <dimen name="qs_media_rec_album_margin">16dp</dimen> <dimen name="qs_media_rec_album_side_margin">16dp</dimen> <dimen name="qs_media_rec_album_bottom_margin">8dp</dimen> <dimen name="qs_media_rec_icon_size">24dp</dimen> <!-- Media tap-to-transfer chip for sender device --> Loading packages/SystemUI/res/values/styles.xml +19 −1 Original line number Diff line number Diff line Loading @@ -672,13 +672,31 @@ <item name="android:layout_height">@dimen/qs_media_rec_album_size</item> <item name="android:background">@drawable/qs_media_light_source</item> <item name="android:layout_marginTop">@dimen/qs_media_padding</item> <item name="android:layout_marginBottom">@dimen/qs_media_padding</item> <item name="android:layout_marginBottom">@dimen/qs_media_rec_album_bottom_margin</item> </style> <style name="MediaPlayer.Recommendation.Album"> <item name="android:backgroundTint">@color/media_player_album_bg</item> </style> <style name="MediaPlayer.Recommendation.Text"> <item name="android:layout_width">@dimen/qs_media_rec_album_size</item> <item name="android:layout_height">wrap_content</item> <item name="android:maxLines">1</item> <item name="android:ellipsize">end</item> <item name="android:textSize">14sp</item> <item name="android:gravity">start</item> </style> <style name="MediaPlayer.Recommendation.Text.Title"> <item name="android:textColor">?android:attr/textColorPrimary</item> </style> <style name="MediaPlayer.Recommendation.Text.Subtitle"> <item name="android:textColor">?android:attr/textColorSecondary</item> </style> <!-- Used to style charging animation AVD animation --> <style name="ChargingAnim" /> Loading packages/SystemUI/res/xml/media_recommendation_collapsed.xml +74 −1 Original line number Diff line number Diff line Loading @@ -15,7 +15,8 @@ ~ limitations under the License --> <ConstraintSet xmlns:android="http://schemas.android.com/apk/res/android" > xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <Constraint android:id="@+id/sizing_view" Loading @@ -23,4 +24,76 @@ android:layout_height="@dimen/qs_media_session_height_collapsed" /> <!-- Only the constraintBottom and marginBottom are different. The rest of the constraints are the same as the constraints in media_smartspace_recommendations. But due to how ConstraintSets work, all the constraints need to be in the same place. Ditto for the other cover containers. --> <Constraint android:id="@+id/media_cover1_container" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/media_cover2_container" android:layout_marginEnd="@dimen/qs_media_rec_album_side_margin" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintVertical_bias="0.5" /> <Constraint android:id="@+id/media_title1" android:visibility="gone" /> <Constraint android:id="@+id/media_subtitle1" android:visibility="gone" /> <Constraint android:id="@+id/media_cover2_container" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toEndOf="@id/media_cover1_container" app:layout_constraintEnd_toStartOf="@id/media_cover3_container" android:layout_marginEnd="@dimen/qs_media_rec_album_side_margin" app:layout_constraintVertical_bias="0.5" /> <Constraint android:id="@+id/media_title2" android:visibility="gone" /> <Constraint android:id="@+id/media_subtitle2" android:visibility="gone" /> <Constraint android:id="@+id/media_cover3_container" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toEndOf="@id/media_cover2_container" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="@dimen/qs_media_padding" app:layout_constraintVertical_bias="0.5" /> <Constraint android:id="@+id/media_title3" android:visibility="gone" /> <Constraint android:id="@+id/media_subtitle3" android:visibility="gone" /> </ConstraintSet> packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +18 −0 Original line number Diff line number Diff line Loading @@ -1054,6 +1054,24 @@ public class MediaControlPanel { recommendation.getTitle(), artistName, appName)); } // Set up title CharSequence title = recommendation.getTitle(); TextView titleView = mRecommendationViewHolder.getMediaTitles().get(uiComponentIndex); titleView.setText(title); // TODO(b/223603970): If none of them have titles, should we then hide the views? // Set up subtitle CharSequence subtitle = recommendation.getSubtitle(); TextView subtitleView = mRecommendationViewHolder.getMediaSubtitles().get(uiComponentIndex); // It would look awkward to show a subtitle if we don't have a title. boolean shouldShowSubtitleText = !TextUtils.isEmpty(title); CharSequence subtitleText = shouldShowSubtitleText ? subtitle : ""; subtitleView.setText(subtitleText); // TODO(b/223603970): If none of them have subtitles, should we then hide the views? uiComponentIndex++; } Loading Loading
packages/SystemUI/res/layout/media_smartspace_recommendations.xml +61 −6 Original line number Diff line number Diff line Loading @@ -42,10 +42,10 @@ android:id="@+id/media_cover1_container" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@+id/media_title1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/media_cover2_container" android:layout_marginEnd="@dimen/qs_media_rec_album_margin" android:layout_marginEnd="@dimen/qs_media_rec_album_side_margin" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintVertical_bias="0.5" Loading @@ -63,16 +63,33 @@ android:scaleType="centerCrop"/> </FrameLayout> <!-- TODO(b/223603970): Add title and subtitle below each album cover. --> <TextView android:id="@+id/media_title1" style="@style/MediaPlayer.Recommendation.Text.Title" app:layout_constraintStart_toStartOf="@+id/media_cover1_container" app:layout_constraintEnd_toEndOf="@+id/media_cover1_container" app:layout_constraintTop_toBottomOf="@+id/media_cover1_container" app:layout_constraintBottom_toTopOf="@+id/media_subtitle1" /> <TextView android:id="@+id/media_subtitle1" style="@style/MediaPlayer.Recommendation.Text.Subtitle" app:layout_constraintStart_toStartOf="@+id/media_cover1_container" app:layout_constraintEnd_toEndOf="@+id/media_cover1_container" app:layout_constraintTop_toBottomOf="@+id/media_title1" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" /> <FrameLayout android:id="@+id/media_cover2_container" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@id/media_title2" app:layout_constraintStart_toEndOf="@id/media_cover1_container" app:layout_constraintEnd_toStartOf="@id/media_cover3_container" android:layout_marginEnd="@dimen/qs_media_rec_album_margin" android:layout_marginEnd="@dimen/qs_media_rec_album_side_margin" app:layout_constraintVertical_bias="0.5" > <ImageView Loading @@ -86,11 +103,30 @@ android:scaleType="centerCrop"/> </FrameLayout> <TextView android:id="@+id/media_title2" style="@style/MediaPlayer.Recommendation.Text.Title" app:layout_constraintStart_toStartOf="@+id/media_cover2_container" app:layout_constraintEnd_toEndOf="@+id/media_cover2_container" app:layout_constraintTop_toBottomOf="@+id/media_cover2_container" app:layout_constraintBottom_toTopOf="@+id/media_subtitle2" /> <TextView android:id="@+id/media_subtitle2" style="@style/MediaPlayer.Recommendation.Text.Subtitle" app:layout_constraintStart_toStartOf="@+id/media_cover2_container" app:layout_constraintEnd_toEndOf="@+id/media_cover2_container" app:layout_constraintTop_toBottomOf="@+id/media_title2" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" /> <FrameLayout android:id="@+id/media_cover3_container" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@id/media_title3" app:layout_constraintStart_toEndOf="@id/media_cover2_container" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="@dimen/qs_media_padding" Loading @@ -107,6 +143,25 @@ android:scaleType="centerCrop"/> </FrameLayout> <TextView android:id="@+id/media_title3" style="@style/MediaPlayer.Recommendation.Text.Title" app:layout_constraintStart_toStartOf="@+id/media_cover3_container" app:layout_constraintEnd_toEndOf="@+id/media_cover3_container" app:layout_constraintTop_toBottomOf="@+id/media_cover3_container" app:layout_constraintBottom_toTopOf="@+id/media_subtitle3" /> <TextView android:id="@+id/media_subtitle3" style="@style/MediaPlayer.Recommendation.Text.Subtitle" app:layout_constraintStart_toStartOf="@+id/media_cover3_container" app:layout_constraintEnd_toEndOf="@+id/media_cover3_container" app:layout_constraintTop_toBottomOf="@+id/media_title3" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" /> <!-- Long press menu --> <TextView android:layout_width="match_parent" Loading
packages/SystemUI/res/values/dimens.xml +2 −1 Original line number Diff line number Diff line Loading @@ -980,7 +980,8 @@ <!-- Size of Smartspace media recommendations cards in the QSPanel carousel --> <dimen name="qs_media_rec_album_size">88dp</dimen> <dimen name="qs_media_rec_album_margin">16dp</dimen> <dimen name="qs_media_rec_album_side_margin">16dp</dimen> <dimen name="qs_media_rec_album_bottom_margin">8dp</dimen> <dimen name="qs_media_rec_icon_size">24dp</dimen> <!-- Media tap-to-transfer chip for sender device --> Loading
packages/SystemUI/res/values/styles.xml +19 −1 Original line number Diff line number Diff line Loading @@ -672,13 +672,31 @@ <item name="android:layout_height">@dimen/qs_media_rec_album_size</item> <item name="android:background">@drawable/qs_media_light_source</item> <item name="android:layout_marginTop">@dimen/qs_media_padding</item> <item name="android:layout_marginBottom">@dimen/qs_media_padding</item> <item name="android:layout_marginBottom">@dimen/qs_media_rec_album_bottom_margin</item> </style> <style name="MediaPlayer.Recommendation.Album"> <item name="android:backgroundTint">@color/media_player_album_bg</item> </style> <style name="MediaPlayer.Recommendation.Text"> <item name="android:layout_width">@dimen/qs_media_rec_album_size</item> <item name="android:layout_height">wrap_content</item> <item name="android:maxLines">1</item> <item name="android:ellipsize">end</item> <item name="android:textSize">14sp</item> <item name="android:gravity">start</item> </style> <style name="MediaPlayer.Recommendation.Text.Title"> <item name="android:textColor">?android:attr/textColorPrimary</item> </style> <style name="MediaPlayer.Recommendation.Text.Subtitle"> <item name="android:textColor">?android:attr/textColorSecondary</item> </style> <!-- Used to style charging animation AVD animation --> <style name="ChargingAnim" /> Loading
packages/SystemUI/res/xml/media_recommendation_collapsed.xml +74 −1 Original line number Diff line number Diff line Loading @@ -15,7 +15,8 @@ ~ limitations under the License --> <ConstraintSet xmlns:android="http://schemas.android.com/apk/res/android" > xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <Constraint android:id="@+id/sizing_view" Loading @@ -23,4 +24,76 @@ android:layout_height="@dimen/qs_media_session_height_collapsed" /> <!-- Only the constraintBottom and marginBottom are different. The rest of the constraints are the same as the constraints in media_smartspace_recommendations. But due to how ConstraintSets work, all the constraints need to be in the same place. Ditto for the other cover containers. --> <Constraint android:id="@+id/media_cover1_container" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/media_cover2_container" android:layout_marginEnd="@dimen/qs_media_rec_album_side_margin" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintVertical_bias="0.5" /> <Constraint android:id="@+id/media_title1" android:visibility="gone" /> <Constraint android:id="@+id/media_subtitle1" android:visibility="gone" /> <Constraint android:id="@+id/media_cover2_container" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toEndOf="@id/media_cover1_container" app:layout_constraintEnd_toStartOf="@id/media_cover3_container" android:layout_marginEnd="@dimen/qs_media_rec_album_side_margin" app:layout_constraintVertical_bias="0.5" /> <Constraint android:id="@+id/media_title2" android:visibility="gone" /> <Constraint android:id="@+id/media_subtitle2" android:visibility="gone" /> <Constraint android:id="@+id/media_cover3_container" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="@dimen/qs_media_padding" style="@style/MediaPlayer.Recommendation.AlbumContainer" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toEndOf="@id/media_cover2_container" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="@dimen/qs_media_padding" app:layout_constraintVertical_bias="0.5" /> <Constraint android:id="@+id/media_title3" android:visibility="gone" /> <Constraint android:id="@+id/media_subtitle3" android:visibility="gone" /> </ConstraintSet>
packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +18 −0 Original line number Diff line number Diff line Loading @@ -1054,6 +1054,24 @@ public class MediaControlPanel { recommendation.getTitle(), artistName, appName)); } // Set up title CharSequence title = recommendation.getTitle(); TextView titleView = mRecommendationViewHolder.getMediaTitles().get(uiComponentIndex); titleView.setText(title); // TODO(b/223603970): If none of them have titles, should we then hide the views? // Set up subtitle CharSequence subtitle = recommendation.getSubtitle(); TextView subtitleView = mRecommendationViewHolder.getMediaSubtitles().get(uiComponentIndex); // It would look awkward to show a subtitle if we don't have a title. boolean shouldShowSubtitleText = !TextUtils.isEmpty(title); CharSequence subtitleText = shouldShowSubtitleText ? subtitle : ""; subtitleView.setText(subtitleText); // TODO(b/223603970): If none of them have subtitles, should we then hide the views? uiComponentIndex++; } Loading