diff options
6 files changed, 159 insertions, 288 deletions
diff --git a/packages/SystemUI/res/layout/media_smartspace_recommendations.xml b/packages/SystemUI/res/layout/media_smartspace_recommendations.xml index 8c54e2c1cec4..5fb4819cb8b5 100644 --- a/packages/SystemUI/res/layout/media_smartspace_recommendations.xml +++ b/packages/SystemUI/res/layout/media_smartspace_recommendations.xml @@ -46,117 +46,83 @@ <com.android.internal.widget.CachingIconView android:id="@+id/recommendation_card_icon" - android:layout_width="@dimen/qs_aa_media_rec_header_icon_size" - android:layout_height="@dimen/qs_aa_media_rec_header_icon_size" + android:layout_width="@dimen/qs_media_icon_size" + android:layout_height="@dimen/qs_media_icon_size" android:src="@drawable/ic_headset" - android:tint="?android:attr/textColor" /> + style="@style/MediaPlayer.AppIcon"/> <TextView android:id="@+id/recommendation_card_text" - android:layout_width="wrap_content" + android:layout_width="0dp" android:layout_height="wrap_content" - android:singleLine="true" + android:maxLines="2" android:text="@string/controls_media_smartspace_rec_title" android:fontFamily="google-sans-medium" android:textDirection="locale" - android:textSize="@dimen/qq_aa_media_rec_header_text_size" /> + android:textSize="@dimen/qq_aa_media_rec_header_text_size" + android:breakStrategy="balanced" + android:hyphenationFrequency="none"/> <ImageView android:id="@+id/media_cover1" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" android:adjustViewBounds="true" android:background="@drawable/bg_smartspace_media_item" style="@style/MediaPlayer.Album" android:clipToOutline="true" android:scaleType="centerCrop"/> - <com.android.internal.widget.CachingIconView - android:id="@+id/media_logo1" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - style="@style/MediaPlayer.AppIcon" /> - <ImageView android:id="@+id/media_cover2" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" android:adjustViewBounds="true" android:background="@drawable/bg_smartspace_media_item" style="@style/MediaPlayer.Album" android:clipToOutline="true" android:scaleType="centerCrop"/> - <com.android.internal.widget.CachingIconView - android:id="@+id/media_logo2" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - style="@style/MediaPlayer.AppIcon" /> - <ImageView android:id="@+id/media_cover3" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" android:adjustViewBounds="true" android:background="@drawable/bg_smartspace_media_item" style="@style/MediaPlayer.Album" android:clipToOutline="true" android:scaleType="centerCrop"/> - <com.android.internal.widget.CachingIconView - android:id="@+id/media_logo3" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - style="@style/MediaPlayer.AppIcon" /> - <ImageView android:id="@+id/media_cover4" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" android:adjustViewBounds="true" android:background="@drawable/bg_smartspace_media_item" style="@style/MediaPlayer.Album" android:clipToOutline="true" android:scaleType="centerCrop"/> - <com.android.internal.widget.CachingIconView - android:id="@+id/media_logo4" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - style="@style/MediaPlayer.AppIcon" /> - <ImageView android:id="@+id/media_cover5" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" android:adjustViewBounds="true" android:background="@drawable/bg_smartspace_media_item" style="@style/MediaPlayer.Album" android:clipToOutline="true" android:scaleType="centerCrop"/> - <com.android.internal.widget.CachingIconView - android:id="@+id/media_logo5" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - style="@style/MediaPlayer.AppIcon" /> - <ImageView android:id="@+id/media_cover6" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" android:adjustViewBounds="true" android:background="@drawable/bg_smartspace_media_item" style="@style/MediaPlayer.Album" android:clipToOutline="true" android:scaleType="centerCrop"/> - <com.android.internal.widget.CachingIconView - android:id="@+id/media_logo6" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - style="@style/MediaPlayer.AppIcon" /> - <!-- Long press menu --> <TextView android:layout_width="wrap_content" diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index b292d7e29171..56a02d736d42 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -1277,10 +1277,9 @@ <dimen name="qs_media_disabled_seekbar_vertical_padding">36dp</dimen> <!-- Size of Smartspace media recommendations cards in the QSPanel carousel --> - <dimen name="qs_aa_media_rec_header_icon_start_margin">10dp</dimen> - <dimen name="qs_aa_media_rec_header_icon_size">18dp</dimen> - <dimen name="qs_aa_media_rec_album_size">72dp</dimen> - <dimen name="qs_aa_media_rec_album_vertical_margin">8dp</dimen> + <dimen name="qs_aa_media_rec_album_size_collapsed">66dp</dimen> + <dimen name="qs_aa_media_rec_album_size_expanded">80dp</dimen> + <dimen name="qs_aa_media_rec_album_margin">8dp</dimen> <dimen name="qq_aa_media_rec_header_text_size">16sp</dimen> <!-- Window magnification --> diff --git a/packages/SystemUI/res/xml/media_recommendation_collapsed.xml b/packages/SystemUI/res/xml/media_recommendation_collapsed.xml index 31a924cf4892..795c9087cec0 100644 --- a/packages/SystemUI/res/xml/media_recommendation_collapsed.xml +++ b/packages/SystemUI/res/xml/media_recommendation_collapsed.xml @@ -20,10 +20,9 @@ <Constraint android:id="@+id/recommendation_card_icon" - android:layout_width="@dimen/qs_aa_media_rec_header_icon_size" - android:layout_height="@dimen/qs_aa_media_rec_header_icon_size" + android:layout_width="@dimen/qs_media_icon_size" + android:layout_height="@dimen/qs_media_icon_size" android:layout_marginTop="@dimen/qs_media_padding" - android:layout_marginStart="@dimen/qs_aa_media_rec_header_icon_start_margin" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/media_vertical_start_guideline" @@ -31,9 +30,8 @@ <Constraint android:id="@+id/recommendation_card_text" - android:layout_width="wrap_content" + android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="@dimen/qs_aa_media_rec_header_icon_start_margin" app:layout_constraintTop_toBottomOf="@id/recommendation_card_icon" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/media_vertical_start_guideline" @@ -41,137 +39,87 @@ <Constraint android:id="@+id/media_cover1" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" + app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_collapsed" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginTop="@dimen/qs_media_padding" android:layout_marginBottom="@dimen/qs_media_padding" + android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin" app:layout_constraintStart_toEndOf="@id/media_vertical_start_guideline" app:layout_constraintEnd_toStartOf="@id/media_cover2" - app:layout_constraintHorizontal_chainStyle="spread" - app:layout_constraintVertical_chainStyle="spread" - android:visibility="gone" /> - - <Constraint - android:id="@+id/media_logo1" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover1" - app:layout_constraintBottom_toBottomOf="@+id/media_cover1" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintHorizontal_bias="1" android:visibility="gone" /> <Constraint android:id="@+id/media_cover2" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" + app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_collapsed" android:layout_marginTop="@dimen/qs_media_padding" android:layout_marginBottom="@dimen/qs_media_padding" + android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/media_cover1" app:layout_constraintEnd_toStartOf="@id/media_cover3" - app:layout_constraintHorizontal_chainStyle="spread" - android:visibility="gone" /> - - <Constraint - android:id="@+id/media_logo2" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover2" - app:layout_constraintBottom_toBottomOf="@+id/media_cover2" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintHorizontal_bias="1" android:visibility="gone" /> <Constraint android:id="@+id/media_cover3" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" + app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_collapsed" android:layout_marginTop="@dimen/qs_media_padding" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/media_cover2" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_chainStyle="spread" + app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_bias="1" android:visibility="gone" /> <Constraint - android:id="@+id/media_logo3" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover3" - app:layout_constraintBottom_toBottomOf="@+id/media_cover3" - android:visibility="gone" /> - - <Constraint android:id="@+id/media_cover4" - android:layout_width="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" android:layout_height="0dp" + android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin" app:layout_constraintTop_toBottomOf="@+id/media_cover1" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/media_vertical_start_guideline" app:layout_constraintEnd_toStartOf="@id/media_cover5" - app:layout_constraintHorizontal_chainStyle="spread" - android:visibility="gone" /> - - <Constraint - android:id="@+id/media_logo4" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="0dp" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover4" - app:layout_constraintBottom_toBottomOf="@+id/media_cover4" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintHorizontal_bias="1" android:visibility="gone" /> <Constraint android:id="@+id/media_cover5" - android:layout_width="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" android:layout_height="0dp" + android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin" app:layout_constraintTop_toBottomOf="@+id/media_cover2" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/media_cover4" app:layout_constraintEnd_toStartOf="@+id/media_cover6" - app:layout_constraintHorizontal_chainStyle="spread" - android:visibility="gone" /> - - <Constraint - android:id="@+id/media_logo5" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="0dp" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover5" - app:layout_constraintBottom_toBottomOf="@+id/media_cover5" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintHorizontal_bias="1" android:visibility="gone" /> <Constraint android:id="@+id/media_cover6" - android:layout_width="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintTop_toBottomOf="@id/media_cover3" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/media_cover5" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_chainStyle="spread" + app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_bias="1" android:visibility="gone" /> - <Constraint - android:id="@+id/media_logo6" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="0dp" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover6" - app:layout_constraintBottom_toBottomOf="@+id/media_cover6" - android:visibility="gone" /> - </ConstraintSet> diff --git a/packages/SystemUI/res/xml/media_recommendation_expanded.xml b/packages/SystemUI/res/xml/media_recommendation_expanded.xml index 1411030a7431..3d03a9a3c52e 100644 --- a/packages/SystemUI/res/xml/media_recommendation_expanded.xml +++ b/packages/SystemUI/res/xml/media_recommendation_expanded.xml @@ -20,10 +20,9 @@ <Constraint android:id="@+id/recommendation_card_icon" - android:layout_width="@dimen/qs_aa_media_rec_header_icon_size" - android:layout_height="@dimen/qs_aa_media_rec_header_icon_size" + android:layout_width="@dimen/qs_media_icon_size" + android:layout_height="@dimen/qs_media_icon_size" android:layout_marginTop="@dimen/qs_media_padding" - android:layout_marginStart="@dimen/qs_aa_media_rec_header_icon_start_margin" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/media_vertical_start_guideline" @@ -31,9 +30,8 @@ <Constraint android:id="@+id/recommendation_card_text" - android:layout_width="wrap_content" + android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="@dimen/qs_aa_media_rec_header_icon_start_margin" app:layout_constraintTop_toBottomOf="@id/recommendation_card_icon" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/media_vertical_start_guideline" @@ -41,154 +39,108 @@ <Constraint android:id="@+id/media_cover1" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded" + app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded" android:layout_marginTop="@dimen/qs_media_padding" - android:layout_marginBottom="@dimen/qs_aa_media_rec_album_vertical_margin" + android:layout_marginBottom="@dimen/qs_aa_media_rec_album_margin" + android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@+id/media_horizontal_center_guideline" app:layout_constraintStart_toEndOf="@id/media_vertical_start_guideline" app:layout_constraintEnd_toStartOf="@id/media_cover2" - app:layout_constraintHorizontal_chainStyle="spread" - app:layout_constraintVertical_chainStyle="spread" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintHorizontal_bias="1" + app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_bias="0" android:visibility="gone" /> <Constraint - android:id="@+id/media_logo1" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover1" - app:layout_constraintBottom_toBottomOf="@+id/media_cover1" - android:visibility="gone" /> - - <Constraint android:id="@+id/media_cover2" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded" + app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded" android:layout_marginTop="@dimen/qs_media_padding" - android:layout_marginBottom="@dimen/qs_aa_media_rec_album_vertical_margin" + android:layout_marginBottom="@dimen/qs_aa_media_rec_album_margin" + android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@+id/media_horizontal_center_guideline" app:layout_constraintStart_toEndOf="@id/media_cover1" app:layout_constraintEnd_toStartOf="@id/media_cover3" - app:layout_constraintHorizontal_chainStyle="spread" - app:layout_constraintVertical_chainStyle="spread" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintHorizontal_bias="1" + app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_bias="0" android:visibility="gone" /> <Constraint - android:id="@+id/media_logo2" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover2" - app:layout_constraintBottom_toBottomOf="@+id/media_cover2" - android:visibility="gone" /> - - <Constraint android:id="@+id/media_cover3" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded" + app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded" android:layout_marginTop="@dimen/qs_media_padding" - android:layout_marginBottom="@dimen/qs_aa_media_rec_album_vertical_margin" + android:layout_marginBottom="@dimen/qs_aa_media_rec_album_margin" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@+id/media_horizontal_center_guideline" app:layout_constraintStart_toEndOf="@id/media_cover2" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_chainStyle="spread" + app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_bias="1" - app:layout_constraintVertical_chainStyle="spread" + app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_bias="0" android:visibility="gone" /> <Constraint - android:id="@+id/media_logo3" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover3" - app:layout_constraintBottom_toBottomOf="@+id/media_cover3" - android:visibility="gone" /> - - <Constraint android:id="@+id/media_cover4" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" - android:layout_marginTop="@dimen/qs_aa_media_rec_album_vertical_margin" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded" + app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded" + android:layout_marginTop="@dimen/qs_aa_media_rec_album_margin" android:layout_marginBottom="@dimen/qs_media_padding" + android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin" app:layout_constraintTop_toBottomOf="@+id/media_horizontal_center_guideline" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/media_vertical_start_guideline" app:layout_constraintEnd_toStartOf="@id/media_cover5" - app:layout_constraintHorizontal_chainStyle="spread" - app:layout_constraintVertical_chainStyle="spread" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintHorizontal_bias="1" + app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_bias="1" android:visibility="gone" /> <Constraint - android:id="@+id/media_logo4" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover4" - app:layout_constraintBottom_toBottomOf="@+id/media_cover4" - android:visibility="gone" /> - - <Constraint android:id="@+id/media_cover5" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" - android:layout_marginTop="@dimen/qs_aa_media_rec_album_vertical_margin" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded" + app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded" + android:layout_marginTop="@dimen/qs_aa_media_rec_album_margin" android:layout_marginBottom="@dimen/qs_media_padding" + android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin" app:layout_constraintTop_toBottomOf="@+id/media_horizontal_center_guideline" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/media_cover4" app:layout_constraintEnd_toStartOf="@+id/media_cover6" - app:layout_constraintHorizontal_chainStyle="spread" - app:layout_constraintVertical_chainStyle="spread" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintHorizontal_bias="1" + app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_bias="1" android:visibility="gone" /> <Constraint - android:id="@+id/media_logo5" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover5" - app:layout_constraintBottom_toBottomOf="@+id/media_cover5" - android:visibility="gone" /> - - <Constraint android:id="@+id/media_cover6" - android:layout_width="@dimen/qs_aa_media_rec_album_size" - android:layout_height="@dimen/qs_aa_media_rec_album_size" - android:layout_marginTop="@dimen/qs_aa_media_rec_album_vertical_margin" + android:layout_width="0dp" + android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded" + app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded" + android:layout_marginTop="@dimen/qs_aa_media_rec_album_margin" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constraintTop_toBottomOf="@id/media_horizontal_center_guideline" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/media_cover5" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_chainStyle="spread" + app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_bias="1" - app:layout_constraintVertical_chainStyle="spread" + app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_bias="1" android:visibility="gone" /> - <Constraint - android:id="@+id/media_logo6" - android:layout_width="@dimen/qs_media_icon_size" - android:layout_height="@dimen/qs_media_icon_size" - android:translationY="@dimen/qs_media_icon_offset" - android:translationX="@dimen/qs_media_icon_offset" - app:layout_constraintEnd_toEndOf="@+id/media_cover6" - app:layout_constraintBottom_toBottomOf="@+id/media_cover6" - android:visibility="gone" /> - </ConstraintSet> diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java index c26a39615812..a873abf3dc30 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java @@ -23,6 +23,7 @@ import android.app.smartspace.SmartspaceAction; import android.app.smartspace.SmartspaceTarget; import android.content.Context; import android.content.Intent; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.ColorStateList; import android.graphics.ColorMatrix; @@ -511,10 +512,31 @@ public class MediaControlPanel { return; } + // Set up recommendation card's header. + ApplicationInfo applicationInfo = getApplicationInfo(target); + if (applicationInfo == null) { + Log.w(TAG, "No valid application info is found for media recommendations"); + return; + } + + PackageManager packageManager = mContext.getPackageManager(); + // Set up media source app's logo. + Drawable icon = packageManager.getApplicationIcon(applicationInfo); + icon.setColorFilter(getGrayscaleFilter()); + ImageView headerLogoImageView = mRecommendationViewHolder.getCardIcon(); + headerLogoImageView.setImageDrawable(icon); + // Set up media source app's label text. Fallback to "Play" if the found label is empty. + CharSequence appLabel = packageManager.getApplicationLabel(applicationInfo); + if (appLabel.length() != 0) { + TextView headerTitleText = mRecommendationViewHolder.getCardText(); + headerTitleText.setText(appLabel); + } + // Set up media card's tap action if applicable. + setSmartspaceRecItemOnClickListener( + mRecommendationViewHolder.getRecommendations(), target.getBaseAction()); + List<ImageView> mediaCoverItems = mRecommendationViewHolder.getMediaCoverItems(); - List<ImageView> mediaLogoItems = mRecommendationViewHolder.getMediaLogoItems(); List<Integer> mediaCoverItemsResIds = mRecommendationViewHolder.getMediaCoverItemsResIds(); - List<Integer> mediaLogoItemsResIds = mRecommendationViewHolder.getMediaLogoItemsResIds(); ConstraintSet expandedSet = mMediaViewController.getExpandedLayout(); ConstraintSet collapsedSet = mMediaViewController.getCollapsedLayout(); int mediaRecommendationNum = Math.min(mediaRecommendationList.size(), @@ -528,50 +550,22 @@ public class MediaControlPanel { continue; } - // Get media source app's logo. - Bundle extras = recommendation.getExtras(); - Drawable icon = null; - if (extras != null && extras.getString(EXTRAS_MEDIA_SOURCE_PACKAGE_NAME) != null) { - // Get the logo from app's package name when applicable. - String packageName = extras.getString(EXTRAS_MEDIA_SOURCE_PACKAGE_NAME); - try { - icon = mContext.getPackageManager().getApplicationIcon( - packageName); - icon.setColorFilter(getGrayscaleFilter()); - } catch (PackageManager.NameNotFoundException e) { - Log.w(TAG, "No media source icon can be fetched via package name", e); - } - } else { - Log.w(TAG, "No media source icon is provided. Skipping this item..."); - continue; - } - - // Set up media source app's logo. - ImageView mediaSourceLogoImageView = mediaLogoItems.get(uiComponentIndex); - mediaSourceLogoImageView.setImageDrawable(icon); - // Set up media item cover. ImageView mediaCoverImageView = mediaCoverItems.get(uiComponentIndex); mediaCoverImageView.setImageIcon(recommendation.getIcon()); - // Set up the click listener if applicable. + // Set up the media item's click listener if applicable. setSmartspaceRecItemOnClickListener(mediaCoverImageView, recommendation); if (uiComponentIndex < MEDIA_RECOMMENDATION_ITEMS_PER_ROW) { setVisibleAndAlpha(collapsedSet, mediaCoverItemsResIds.get(uiComponentIndex), true); - setVisibleAndAlpha(collapsedSet, - mediaLogoItemsResIds.get(uiComponentIndex), true); } else { setVisibleAndAlpha(collapsedSet, mediaCoverItemsResIds.get(uiComponentIndex), false); - setVisibleAndAlpha(collapsedSet, - mediaLogoItemsResIds.get(uiComponentIndex), false); } setVisibleAndAlpha(expandedSet, mediaCoverItemsResIds.get(uiComponentIndex), true); - setVisibleAndAlpha(expandedSet, - mediaLogoItemsResIds.get(uiComponentIndex), true); uiComponentIndex++; } @@ -681,7 +675,8 @@ public class MediaControlPanel { private void setSmartspaceRecItemOnClickListener( @NonNull View view, @NonNull SmartspaceAction action) { - if (view == null || action == null || action.getIntent() == null) { + if (view == null || action == null || action.getIntent() == null + || action.getIntent().getExtras() == null) { Log.e(TAG, "No tap action can be set up"); return; } @@ -732,6 +727,38 @@ public class MediaControlPanel { } /** + * Returns the application info for the media recommendation's source app. + * + * @param target Smartspace target contains a list of media recommendations. Each item should + * contain the same source app's info. + * + * @return The source app's application info. This value can be null if no valid application + * info can be obtained. + */ + private ApplicationInfo getApplicationInfo(@NonNull SmartspaceTarget target) { + List<SmartspaceAction> mediaRecommendationList = target.getIconGrid(); + if (mediaRecommendationList == null || mediaRecommendationList.isEmpty()) { + return null; + } + + for (SmartspaceAction recommendation: mediaRecommendationList) { + Bundle extras = recommendation.getExtras(); + if (extras != null && extras.getString(EXTRAS_MEDIA_SOURCE_PACKAGE_NAME) != null) { + // Get the logo from app's package name when applicable. + String packageName = extras.getString(EXTRAS_MEDIA_SOURCE_PACKAGE_NAME); + try { + return mContext.getPackageManager() + .getApplicationInfo(packageName, 0 /* flags */); + } catch (PackageManager.NameNotFoundException e) { + Log.w(TAG, "Fail to get media recommendation's app info", e); + } + } + } + + return null; + } + + /** * Get the surface given the current end location for MediaViewController * @return surface used for Smartspace logging */ diff --git a/packages/SystemUI/src/com/android/systemui/media/RecommendationViewHolder.kt b/packages/SystemUI/src/com/android/systemui/media/RecommendationViewHolder.kt index 3d0e6533b33b..a3f991080b1e 100644 --- a/packages/SystemUI/src/com/android/systemui/media/RecommendationViewHolder.kt +++ b/packages/SystemUI/src/com/android/systemui/media/RecommendationViewHolder.kt @@ -40,13 +40,6 @@ class RecommendationViewHolder private constructor(itemView: View) { itemView.requireViewById(R.id.media_cover4), itemView.requireViewById(R.id.media_cover5), itemView.requireViewById(R.id.media_cover6)) - val mediaLogoItems = listOf<ImageView>( - itemView.requireViewById(R.id.media_logo1), - itemView.requireViewById(R.id.media_logo2), - itemView.requireViewById(R.id.media_logo3), - itemView.requireViewById(R.id.media_logo4), - itemView.requireViewById(R.id.media_logo5), - itemView.requireViewById(R.id.media_logo6)) val mediaCoverItemsResIds = listOf<@IntegerRes Int>( R.id.media_cover1, R.id.media_cover2, @@ -54,13 +47,6 @@ class RecommendationViewHolder private constructor(itemView: View) { R.id.media_cover4, R.id.media_cover5, R.id.media_cover6) - val mediaLogoItemsResIds = listOf<@IntegerRes Int>( - R.id.media_logo1, - R.id.media_logo2, - R.id.media_logo3, - R.id.media_logo4, - R.id.media_logo5, - R.id.media_logo6) // Settings/Guts screen val cancel = itemView.requireViewById<View>(R.id.cancel) @@ -71,7 +57,6 @@ class RecommendationViewHolder private constructor(itemView: View) { init { (recommendations.background as IlluminationDrawable).let { background -> mediaCoverItems.forEach { background.registerLightSource(it) } - mediaLogoItems.forEach { background.registerLightSource(it) } background.registerLightSource(cancel) background.registerLightSource(dismiss) background.registerLightSource(dismissLabel) @@ -109,13 +94,7 @@ class RecommendationViewHolder private constructor(itemView: View) { R.id.media_cover3, R.id.media_cover4, R.id.media_cover5, - R.id.media_cover6, - R.id.media_logo1, - R.id.media_logo2, - R.id.media_logo3, - R.id.media_logo4, - R.id.media_logo5, - R.id.media_logo6 + R.id.media_cover6 ) // Res Ids for the components on the guts panel. |