Loading packages/SystemUI/res/layout/media_long_press_menu.xml 0 → 100644 +105 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- ~ Copyright (C) 2022 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. --> <merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="0dp" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_padding" android:id="@+id/remove_text" android:fontFamily="@*android:string/config_headlineFontFamily" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:text="@string/controls_media_close_session" android:gravity="center_horizontal|top" app:layout_constraintTop_toBottomOf="@id/settings" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@id/cancel" /> <ImageButton android:id="@+id/settings" android:src="@drawable/ic_settings" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:layout_marginEnd="4dp" android:background="@drawable/qs_media_light_source" android:contentDescription="@string/controls_media_settings_button" android:layout_gravity="top" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"> </ImageButton> <FrameLayout android:id="@+id/dismiss" android:background="@drawable/qs_media_light_source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_action_spacing" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/cancel" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:id="@+id/dismiss_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|top" style="@style/MediaPlayer.SolidButton" android:background="@drawable/qs_media_solid_button" android:text="@string/controls_media_dismiss_button" /> </FrameLayout> <FrameLayout android:id="@+id/cancel" android:background="@drawable/qs_media_light_source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_padding" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintStart_toEndOf="@id/dismiss" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:id="@+id/cancel_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|top" style="@style/MediaPlayer.OutlineButton" android:text="@string/cancel" /> </FrameLayout> </merge> No newline at end of file packages/SystemUI/res/layout/media_session_view.xml +2 −82 Original line number Diff line number Diff line Loading @@ -300,87 +300,7 @@ android:layout_marginBottom="@dimen/qs_media_padding" android:layout_marginTop="0dp" /> <!-- Long press menu --> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="0dp" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_padding" android:id="@+id/remove_text" android:fontFamily="@*android:string/config_headlineFontFamily" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:text="@string/controls_media_close_session" android:gravity="center_horizontal|top" app:layout_constraintTop_toBottomOf="@id/settings" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@id/cancel" /> <include layout="@layout/media_long_press_menu" /> <ImageButton android:id="@+id/settings" android:src="@drawable/ic_settings" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:layout_marginEnd="4dp" android:background="@drawable/qs_media_light_source" android:contentDescription="@string/controls_media_settings_button" android:layout_gravity="top" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"> </ImageButton> <FrameLayout android:id="@+id/dismiss" android:background="@drawable/qs_media_light_source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_action_spacing" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/cancel" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:id="@+id/dismiss_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|top" style="@style/MediaPlayer.SolidButton" android:background="@drawable/qs_media_solid_button" android:text="@string/controls_media_dismiss_button" /> </FrameLayout> <FrameLayout android:id="@+id/cancel" android:background="@drawable/qs_media_light_source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_padding" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintStart_toEndOf="@id/dismiss" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:id="@+id/cancel_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|top" style="@style/MediaPlayer.OutlineButton" android:text="@string/cancel" /> </FrameLayout> </com.android.systemui.util.animation.TransitionLayout> packages/SystemUI/res/layout/media_smartspace_recommendations.xml +2 −92 Original line number Diff line number Diff line Loading @@ -167,97 +167,7 @@ android:layout_marginBottom="@dimen/qs_media_padding" /> <!-- Long press menu --> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/qs_media_padding" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_padding" android:id="@+id/remove_text" android:fontFamily="@*android:string/config_headlineFontFamily" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:text="@string/controls_media_close_session" android:gravity="center_horizontal|top" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@id/cancel"/> <FrameLayout android:id="@+id/settings" android:background="@drawable/qs_media_light_source" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_action_spacing" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="48dp" app:layout_constraintHeight_min="48dp" app:layout_constraintHorizontal_chainStyle="spread_inside" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/cancel" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:id="@+id/settings_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|bottom" style="@style/MediaPlayer.OutlineButton" android:text="@string/controls_media_settings_button" /> </FrameLayout> <include layout="@layout/media_long_press_menu" /> <FrameLayout android:id="@+id/cancel" android:background="@drawable/qs_media_light_source" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_action_spacing" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="48dp" app:layout_constraintHeight_min="48dp" app:layout_constraintStart_toEndOf="@id/settings" app:layout_constraintEnd_toStartOf="@id/dismiss" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|bottom" style="@style/MediaPlayer.OutlineButton" android:text="@string/cancel" /> </FrameLayout> <FrameLayout android:id="@+id/dismiss" android:background="@drawable/qs_media_light_source" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_padding" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="48dp" app:layout_constraintHeight_min="48dp" app:layout_constraintStart_toEndOf="@id/cancel" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|bottom" style="@style/MediaPlayer.OutlineButton" android:text="@string/controls_media_dismiss_button" /> </FrameLayout> </com.android.systemui.util.animation.TransitionLayout> packages/SystemUI/src/com/android/systemui/media/ColorSchemeTransition.kt +3 −6 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ class ColorSchemeTransition internal constructor( mediaViewHolder.albumView.backgroundTintList = colorList mediaViewHolder.seamlessIcon.imageTintList = colorList mediaViewHolder.seamlessText.setTextColor(surfaceColor) mediaViewHolder.dismissText.setTextColor(surfaceColor) mediaViewHolder.gutsViewHolder.setSurfaceColor(surfaceColor) } val accentPrimary = colorTransitionFactory( Loading @@ -113,9 +113,7 @@ class ColorSchemeTransition internal constructor( val accentColorList = ColorStateList.valueOf(accentPrimary) mediaViewHolder.actionPlayPause.backgroundTintList = accentColorList mediaViewHolder.seamlessButton.backgroundTintList = accentColorList mediaViewHolder.settings.imageTintList = accentColorList mediaViewHolder.cancelText.backgroundTintList = accentColorList mediaViewHolder.dismissText.backgroundTintList = accentColorList mediaViewHolder.gutsViewHolder.setAccentPrimaryColor(accentPrimary) } val textPrimary = colorTransitionFactory( Loading @@ -126,13 +124,12 @@ class ColorSchemeTransition internal constructor( val textColorList = ColorStateList.valueOf(textPrimary) mediaViewHolder.seekBar.thumb.setTintList(textColorList) mediaViewHolder.seekBar.progressTintList = textColorList mediaViewHolder.longPressText.setTextColor(textColorList) mediaViewHolder.cancelText.setTextColor(textColorList) mediaViewHolder.scrubbingElapsedTimeView.setTextColor(textColorList) mediaViewHolder.scrubbingTotalTimeView.setTextColor(textColorList) for (button in mediaViewHolder.getTransparentActionButtons()) { button.imageTintList = textColorList } mediaViewHolder.gutsViewHolder.setTextPrimaryColor(textPrimary) } val textPrimaryInverse = colorTransitionFactory( Loading packages/SystemUI/src/com/android/systemui/media/GutsViewHolder.kt 0 → 100644 +88 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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. */ package com.android.systemui.media import android.content.res.ColorStateList import android.util.Log import android.view.View import android.view.ViewGroup import android.widget.ImageButton import android.widget.TextView import com.android.systemui.R import com.android.systemui.monet.ColorScheme /** * A view holder for the guts menu of a media player. The guts are shown when the user long-presses * on the media player. * * Both [MediaViewHolder] and [RecommendationViewHolder] use the same guts menu layout, so this * class helps share logic between the two. */ class GutsViewHolder constructor(itemView: View) { val gutsText: TextView = itemView.requireViewById(R.id.remove_text) val cancel: View = itemView.requireViewById(R.id.cancel) val cancelText: TextView = itemView.requireViewById(R.id.cancel_text) val dismiss: ViewGroup = itemView.requireViewById(R.id.dismiss) val dismissText: TextView = itemView.requireViewById(R.id.dismiss_text) val settings: ImageButton = itemView.requireViewById(R.id.settings) /** Marquees the main text of the guts menu. */ fun marquee(start: Boolean, delay: Long, tag: String) { val gutsTextHandler = gutsText.handler if (gutsTextHandler == null) { Log.d(tag, "marquee while longPressText.getHandler() is null", Exception()) return } gutsTextHandler.postDelayed( { gutsText.isSelected = start }, delay) } /** Sets the right colors on all the guts views based on the given [ColorScheme]. */ fun setColors(colorScheme: ColorScheme) { setSurfaceColor(surfaceFromScheme(colorScheme)) setTextPrimaryColor(textPrimaryFromScheme(colorScheme)) setAccentPrimaryColor(accentPrimaryFromScheme(colorScheme)) } /** Sets the surface color on all guts views that use it. */ fun setSurfaceColor(surfaceColor: Int) { dismissText.setTextColor(surfaceColor) } /** Sets the primary accent color on all guts views that use it. */ fun setAccentPrimaryColor(accentPrimary: Int) { val accentColorList = ColorStateList.valueOf(accentPrimary) settings.imageTintList = accentColorList cancelText.backgroundTintList = accentColorList dismissText.backgroundTintList = accentColorList } /** Sets the primary text color on all guts views that use it. */ fun setTextPrimaryColor(textPrimary: Int) { val textColorList = ColorStateList.valueOf(textPrimary) gutsText.setTextColor(textColorList) cancelText.setTextColor(textColorList) } companion object { val ids = setOf( R.id.remove_text, R.id.cancel, R.id.dismiss, R.id.settings ) } } Loading
packages/SystemUI/res/layout/media_long_press_menu.xml 0 → 100644 +105 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- ~ Copyright (C) 2022 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. --> <merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="0dp" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_padding" android:id="@+id/remove_text" android:fontFamily="@*android:string/config_headlineFontFamily" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:text="@string/controls_media_close_session" android:gravity="center_horizontal|top" app:layout_constraintTop_toBottomOf="@id/settings" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@id/cancel" /> <ImageButton android:id="@+id/settings" android:src="@drawable/ic_settings" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:layout_marginEnd="4dp" android:background="@drawable/qs_media_light_source" android:contentDescription="@string/controls_media_settings_button" android:layout_gravity="top" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"> </ImageButton> <FrameLayout android:id="@+id/dismiss" android:background="@drawable/qs_media_light_source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_action_spacing" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/cancel" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:id="@+id/dismiss_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|top" style="@style/MediaPlayer.SolidButton" android:background="@drawable/qs_media_solid_button" android:text="@string/controls_media_dismiss_button" /> </FrameLayout> <FrameLayout android:id="@+id/cancel" android:background="@drawable/qs_media_light_source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_padding" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintStart_toEndOf="@id/dismiss" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:id="@+id/cancel_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|top" style="@style/MediaPlayer.OutlineButton" android:text="@string/cancel" /> </FrameLayout> </merge> No newline at end of file
packages/SystemUI/res/layout/media_session_view.xml +2 −82 Original line number Diff line number Diff line Loading @@ -300,87 +300,7 @@ android:layout_marginBottom="@dimen/qs_media_padding" android:layout_marginTop="0dp" /> <!-- Long press menu --> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="0dp" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_padding" android:id="@+id/remove_text" android:fontFamily="@*android:string/config_headlineFontFamily" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:text="@string/controls_media_close_session" android:gravity="center_horizontal|top" app:layout_constraintTop_toBottomOf="@id/settings" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@id/cancel" /> <include layout="@layout/media_long_press_menu" /> <ImageButton android:id="@+id/settings" android:src="@drawable/ic_settings" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:layout_marginEnd="4dp" android:background="@drawable/qs_media_light_source" android:contentDescription="@string/controls_media_settings_button" android:layout_gravity="top" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"> </ImageButton> <FrameLayout android:id="@+id/dismiss" android:background="@drawable/qs_media_light_source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_action_spacing" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/cancel" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:id="@+id/dismiss_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|top" style="@style/MediaPlayer.SolidButton" android:background="@drawable/qs_media_solid_button" android:text="@string/controls_media_dismiss_button" /> </FrameLayout> <FrameLayout android:id="@+id/cancel" android:background="@drawable/qs_media_light_source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_padding" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="@dimen/min_clickable_item_size" app:layout_constraintHeight_min="@dimen/min_clickable_item_size" app:layout_constraintStart_toEndOf="@id/dismiss" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:id="@+id/cancel_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|top" style="@style/MediaPlayer.OutlineButton" android:text="@string/cancel" /> </FrameLayout> </com.android.systemui.util.animation.TransitionLayout>
packages/SystemUI/res/layout/media_smartspace_recommendations.xml +2 −92 Original line number Diff line number Diff line Loading @@ -167,97 +167,7 @@ android:layout_marginBottom="@dimen/qs_media_padding" /> <!-- Long press menu --> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/qs_media_padding" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_padding" android:id="@+id/remove_text" android:fontFamily="@*android:string/config_headlineFontFamily" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:text="@string/controls_media_close_session" android:gravity="center_horizontal|top" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@id/cancel"/> <FrameLayout android:id="@+id/settings" android:background="@drawable/qs_media_light_source" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_action_spacing" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="48dp" app:layout_constraintHeight_min="48dp" app:layout_constraintHorizontal_chainStyle="spread_inside" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/cancel" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:id="@+id/settings_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|bottom" style="@style/MediaPlayer.OutlineButton" android:text="@string/controls_media_settings_button" /> </FrameLayout> <include layout="@layout/media_long_press_menu" /> <FrameLayout android:id="@+id/cancel" android:background="@drawable/qs_media_light_source" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_action_spacing" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="48dp" app:layout_constraintHeight_min="48dp" app:layout_constraintStart_toEndOf="@id/settings" app:layout_constraintEnd_toStartOf="@id/dismiss" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|bottom" style="@style/MediaPlayer.OutlineButton" android:text="@string/cancel" /> </FrameLayout> <FrameLayout android:id="@+id/dismiss" android:background="@drawable/qs_media_light_source" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_padding" android:layout_marginBottom="@dimen/qs_media_padding" app:layout_constrainedWidth="true" app:layout_constraintWidth_min="48dp" app:layout_constraintHeight_min="48dp" app:layout_constraintStart_toEndOf="@id/cancel" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/remove_text"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|bottom" style="@style/MediaPlayer.OutlineButton" android:text="@string/controls_media_dismiss_button" /> </FrameLayout> </com.android.systemui.util.animation.TransitionLayout>
packages/SystemUI/src/com/android/systemui/media/ColorSchemeTransition.kt +3 −6 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ class ColorSchemeTransition internal constructor( mediaViewHolder.albumView.backgroundTintList = colorList mediaViewHolder.seamlessIcon.imageTintList = colorList mediaViewHolder.seamlessText.setTextColor(surfaceColor) mediaViewHolder.dismissText.setTextColor(surfaceColor) mediaViewHolder.gutsViewHolder.setSurfaceColor(surfaceColor) } val accentPrimary = colorTransitionFactory( Loading @@ -113,9 +113,7 @@ class ColorSchemeTransition internal constructor( val accentColorList = ColorStateList.valueOf(accentPrimary) mediaViewHolder.actionPlayPause.backgroundTintList = accentColorList mediaViewHolder.seamlessButton.backgroundTintList = accentColorList mediaViewHolder.settings.imageTintList = accentColorList mediaViewHolder.cancelText.backgroundTintList = accentColorList mediaViewHolder.dismissText.backgroundTintList = accentColorList mediaViewHolder.gutsViewHolder.setAccentPrimaryColor(accentPrimary) } val textPrimary = colorTransitionFactory( Loading @@ -126,13 +124,12 @@ class ColorSchemeTransition internal constructor( val textColorList = ColorStateList.valueOf(textPrimary) mediaViewHolder.seekBar.thumb.setTintList(textColorList) mediaViewHolder.seekBar.progressTintList = textColorList mediaViewHolder.longPressText.setTextColor(textColorList) mediaViewHolder.cancelText.setTextColor(textColorList) mediaViewHolder.scrubbingElapsedTimeView.setTextColor(textColorList) mediaViewHolder.scrubbingTotalTimeView.setTextColor(textColorList) for (button in mediaViewHolder.getTransparentActionButtons()) { button.imageTintList = textColorList } mediaViewHolder.gutsViewHolder.setTextPrimaryColor(textPrimary) } val textPrimaryInverse = colorTransitionFactory( Loading
packages/SystemUI/src/com/android/systemui/media/GutsViewHolder.kt 0 → 100644 +88 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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. */ package com.android.systemui.media import android.content.res.ColorStateList import android.util.Log import android.view.View import android.view.ViewGroup import android.widget.ImageButton import android.widget.TextView import com.android.systemui.R import com.android.systemui.monet.ColorScheme /** * A view holder for the guts menu of a media player. The guts are shown when the user long-presses * on the media player. * * Both [MediaViewHolder] and [RecommendationViewHolder] use the same guts menu layout, so this * class helps share logic between the two. */ class GutsViewHolder constructor(itemView: View) { val gutsText: TextView = itemView.requireViewById(R.id.remove_text) val cancel: View = itemView.requireViewById(R.id.cancel) val cancelText: TextView = itemView.requireViewById(R.id.cancel_text) val dismiss: ViewGroup = itemView.requireViewById(R.id.dismiss) val dismissText: TextView = itemView.requireViewById(R.id.dismiss_text) val settings: ImageButton = itemView.requireViewById(R.id.settings) /** Marquees the main text of the guts menu. */ fun marquee(start: Boolean, delay: Long, tag: String) { val gutsTextHandler = gutsText.handler if (gutsTextHandler == null) { Log.d(tag, "marquee while longPressText.getHandler() is null", Exception()) return } gutsTextHandler.postDelayed( { gutsText.isSelected = start }, delay) } /** Sets the right colors on all the guts views based on the given [ColorScheme]. */ fun setColors(colorScheme: ColorScheme) { setSurfaceColor(surfaceFromScheme(colorScheme)) setTextPrimaryColor(textPrimaryFromScheme(colorScheme)) setAccentPrimaryColor(accentPrimaryFromScheme(colorScheme)) } /** Sets the surface color on all guts views that use it. */ fun setSurfaceColor(surfaceColor: Int) { dismissText.setTextColor(surfaceColor) } /** Sets the primary accent color on all guts views that use it. */ fun setAccentPrimaryColor(accentPrimary: Int) { val accentColorList = ColorStateList.valueOf(accentPrimary) settings.imageTintList = accentColorList cancelText.backgroundTintList = accentColorList dismissText.backgroundTintList = accentColorList } /** Sets the primary text color on all guts views that use it. */ fun setTextPrimaryColor(textPrimary: Int) { val textColorList = ColorStateList.valueOf(textPrimary) gutsText.setTextColor(textColorList) cancelText.setTextColor(textColorList) } companion object { val ids = setOf( R.id.remove_text, R.id.cancel, R.id.dismiss, R.id.settings ) } }