1<?xml version="1.0" encoding="utf-8"?> 2<!-- 3 ~ Copyright (C) 2019 The Android Open Source Project 4 ~ 5 ~ Licensed under the Apache License, Version 2.0 (the "License"); 6 ~ you may not use this file except in compliance with the License. 7 ~ You may obtain a copy of the License at 8 ~ 9 ~ http://www.apache.org/licenses/LICENSE-2.0 10 ~ 11 ~ Unless required by applicable law or agreed to in writing, software 12 ~ distributed under the License is distributed on an "AS IS" BASIS, 13 ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 ~ See the License for the specific language governing permissions and 15 ~ limitations under the License 16 --> 17 18<!-- Layout for media recommendations inside QSPanel carousel --> 19<com.android.systemui.util.animation.TransitionLayout 20 xmlns:android="http://schemas.android.com/apk/res/android" 21 xmlns:app="http://schemas.android.com/apk/res-auto" 22 android:id="@+id/media_recommendations" 23 android:layout_width="match_parent" 24 android:layout_height="wrap_content" 25 android:paddingStart="@dimen/qs_media_padding" 26 android:paddingEnd="@dimen/qs_media_padding" 27 android:clipChildren="false" 28 android:clipToPadding="false" 29 android:forceHasOverlappingRendering="false" 30 android:background="@drawable/qs_media_background" 31 android:theme="@style/MediaPlayer"> 32 33 <androidx.constraintlayout.widget.Guideline 34 android:id="@+id/media_vertical_start_guideline" 35 android:layout_width="wrap_content" 36 android:layout_height="wrap_content" 37 android:orientation="vertical" 38 app:layout_constraintGuide_percent="0.25" /> 39 40 <androidx.constraintlayout.widget.Guideline 41 android:id="@+id/media_horizontal_center_guideline" 42 android:layout_width="wrap_content" 43 android:layout_height="wrap_content" 44 android:orientation="horizontal" 45 app:layout_constraintGuide_percent="0.5" /> 46 47 <com.android.internal.widget.CachingIconView 48 android:id="@+id/recommendation_card_icon" 49 android:layout_width="@dimen/qs_media_icon_size" 50 android:layout_height="@dimen/qs_media_icon_size" 51 android:layout_marginTop="@dimen/qs_media_padding" 52 android:src="@drawable/ic_headset" 53 style="@style/MediaPlayer.AppIcon" 54 app:layout_constraintTop_toTopOf="parent" 55 app:layout_constraintStart_toStartOf="parent" 56 app:layout_constraintEnd_toStartOf="@id/media_vertical_start_guideline" 57 app:layout_constraintHorizontal_bias="0"/> 58 59 <TextView 60 android:id="@+id/recommendation_card_text" 61 android:layout_width="0dp" 62 android:layout_height="wrap_content" 63 android:maxLines="1" 64 android:text="@string/controls_media_smartspace_rec_title" 65 android:fontFamily="google-sans-medium" 66 android:textDirection="locale" 67 android:textSize="@dimen/qq_aa_media_rec_header_text_size" 68 android:hyphenationFrequency="none" 69 app:layout_constraintTop_toBottomOf="@id/recommendation_card_icon" 70 app:layout_constraintStart_toStartOf="parent" 71 app:layout_constraintEnd_toStartOf="@id/media_vertical_start_guideline" 72 app:layout_constraintHorizontal_bias="0"/> 73 74 <View 75 android:id="@+id/recommendation_gradient_view" 76 android:layout_width="@dimen/qs_aa_media_gradient_bg_width" 77 android:layout_height="0dp" 78 android:clipToPadding="false" 79 android:clipChildren="false" 80 android:background="@drawable/qs_media_recommendation_bg_gradient" 81 app:layout_constraintTop_toTopOf="@id/recommendation_card_text" 82 app:layout_constraintBottom_toBottomOf="@id/recommendation_card_text" 83 app:layout_constraintStart_toStartOf="parent" 84 app:layout_constraintEnd_toStartOf="@id/media_vertical_start_guideline" 85 app:layout_constraintHorizontal_bias="1"/> 86 87 <FrameLayout 88 android:id="@+id/media_cover1_container" 89 android:layout_width="0dp" 90 android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" 91 android:background="@drawable/qs_media_light_source"> 92 <ImageView 93 android:id="@+id/media_cover1" 94 android:layout_width="match_parent" 95 android:layout_height="match_parent" 96 android:adjustViewBounds="true" 97 android:background="@drawable/bg_smartspace_media_item" 98 style="@style/MediaPlayer.Album" 99 android:clipToOutline="true" 100 android:scaleType="centerCrop"/> 101 </FrameLayout> 102 103 <FrameLayout 104 android:id="@+id/media_cover2_container" 105 android:layout_width="0dp" 106 android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" 107 android:background="@drawable/qs_media_light_source"> 108 <ImageView 109 android:id="@+id/media_cover2" 110 android:layout_width="match_parent" 111 android:layout_height="match_parent" 112 android:adjustViewBounds="true" 113 android:background="@drawable/bg_smartspace_media_item" 114 style="@style/MediaPlayer.Album" 115 android:clipToOutline="true" 116 android:scaleType="centerCrop"/> 117 </FrameLayout> 118 119 <FrameLayout 120 android:id="@+id/media_cover3_container" 121 android:layout_width="0dp" 122 android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" 123 android:background="@drawable/qs_media_light_source"> 124 <ImageView 125 android:id="@+id/media_cover3" 126 android:layout_width="match_parent" 127 android:layout_height="match_parent" 128 android:adjustViewBounds="true" 129 android:background="@drawable/bg_smartspace_media_item" 130 style="@style/MediaPlayer.Album" 131 android:clipToOutline="true" 132 android:scaleType="centerCrop"/> 133 </FrameLayout> 134 135 <FrameLayout 136 android:id="@+id/media_cover4_container" 137 android:layout_width="0dp" 138 android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" 139 android:background="@drawable/qs_media_light_source"> 140 <ImageView 141 android:id="@+id/media_cover4" 142 android:layout_width="match_parent" 143 android:layout_height="match_parent" 144 android:adjustViewBounds="true" 145 android:background="@drawable/bg_smartspace_media_item" 146 style="@style/MediaPlayer.Album" 147 android:clipToOutline="true" 148 android:scaleType="centerCrop"/> 149 </FrameLayout> 150 151 <FrameLayout 152 android:id="@+id/media_cover5_container" 153 android:layout_width="0dp" 154 android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" 155 android:background="@drawable/qs_media_light_source"> 156 <ImageView 157 android:id="@+id/media_cover5" 158 android:layout_width="match_parent" 159 android:layout_height="match_parent" 160 android:adjustViewBounds="true" 161 android:background="@drawable/bg_smartspace_media_item" 162 style="@style/MediaPlayer.Album" 163 android:clipToOutline="true" 164 android:scaleType="centerCrop"/> 165 </FrameLayout> 166 167 <FrameLayout 168 android:id="@+id/media_cover6_container" 169 android:layout_width="0dp" 170 android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed" 171 android:background="@drawable/qs_media_light_source"> 172 <ImageView 173 android:id="@+id/media_cover6" 174 android:layout_width="match_parent" 175 android:layout_height="match_parent" 176 android:adjustViewBounds="true" 177 android:background="@drawable/bg_smartspace_media_item" 178 style="@style/MediaPlayer.Album" 179 android:clipToOutline="true" 180 android:scaleType="centerCrop"/> 181 </FrameLayout> 182 183 <!-- Long press menu --> 184 <TextView 185 android:layout_width="match_parent" 186 android:layout_height="wrap_content" 187 android:layout_marginTop="@dimen/qs_media_padding" 188 android:layout_marginStart="@dimen/qs_media_padding" 189 android:layout_marginEnd="@dimen/qs_media_padding" 190 android:id="@+id/remove_text" 191 android:fontFamily="@*android:string/config_headlineFontFamily" 192 android:singleLine="true" 193 android:ellipsize="marquee" 194 android:marqueeRepeatLimit="marquee_forever" 195 android:text="@string/controls_media_close_session" 196 android:gravity="center_horizontal|top" 197 app:layout_constraintTop_toTopOf="parent" 198 app:layout_constraintStart_toStartOf="parent" 199 app:layout_constraintEnd_toEndOf="parent" 200 app:layout_constraintBottom_toTopOf="@id/cancel"/> 201 202 <FrameLayout 203 android:id="@+id/settings" 204 android:background="@drawable/qs_media_light_source" 205 android:layout_width="0dp" 206 android:layout_height="wrap_content" 207 android:layout_marginStart="@dimen/qs_media_padding" 208 android:layout_marginEnd="@dimen/qs_media_action_spacing" 209 android:layout_marginBottom="@dimen/qs_media_padding" 210 app:layout_constrainedWidth="true" 211 app:layout_constraintWidth_min="48dp" 212 app:layout_constraintHeight_min="48dp" 213 app:layout_constraintHorizontal_chainStyle="spread_inside" 214 app:layout_constraintStart_toStartOf="parent" 215 app:layout_constraintEnd_toStartOf="@id/cancel" 216 app:layout_constraintBottom_toBottomOf="parent" 217 app:layout_constraintTop_toBottomOf="@id/remove_text"> 218 219 <TextView 220 android:id="@+id/settings_text" 221 android:layout_width="wrap_content" 222 android:layout_height="wrap_content" 223 android:layout_gravity="center|bottom" 224 style="@style/MediaPlayer.OutlineButton" 225 android:text="@string/controls_media_settings_button" /> 226 </FrameLayout> 227 228 <FrameLayout 229 android:id="@+id/cancel" 230 android:background="@drawable/qs_media_light_source" 231 android:layout_width="0dp" 232 android:layout_height="wrap_content" 233 android:layout_marginStart="@dimen/qs_media_action_spacing" 234 android:layout_marginEnd="@dimen/qs_media_action_spacing" 235 android:layout_marginBottom="@dimen/qs_media_padding" 236 app:layout_constrainedWidth="true" 237 app:layout_constraintWidth_min="48dp" 238 app:layout_constraintHeight_min="48dp" 239 app:layout_constraintStart_toEndOf="@id/settings" 240 app:layout_constraintEnd_toStartOf="@id/dismiss" 241 app:layout_constraintBottom_toBottomOf="parent" 242 app:layout_constraintTop_toBottomOf="@id/remove_text"> 243 244 <TextView 245 android:layout_width="wrap_content" 246 android:layout_height="wrap_content" 247 android:layout_gravity="center|bottom" 248 style="@style/MediaPlayer.OutlineButton" 249 android:text="@string/cancel" /> 250 </FrameLayout> 251 252 <FrameLayout 253 android:id="@+id/dismiss" 254 android:background="@drawable/qs_media_light_source" 255 android:layout_width="0dp" 256 android:layout_height="wrap_content" 257 android:layout_marginStart="@dimen/qs_media_action_spacing" 258 android:layout_marginEnd="@dimen/qs_media_padding" 259 android:layout_marginBottom="@dimen/qs_media_padding" 260 app:layout_constrainedWidth="true" 261 app:layout_constraintWidth_min="48dp" 262 app:layout_constraintHeight_min="48dp" 263 app:layout_constraintStart_toEndOf="@id/cancel" 264 app:layout_constraintEnd_toEndOf="parent" 265 app:layout_constraintBottom_toBottomOf="parent" 266 app:layout_constraintTop_toBottomOf="@id/remove_text"> 267 268 <TextView 269 android:layout_width="wrap_content" 270 android:layout_height="wrap_content" 271 android:layout_gravity="center|bottom" 272 style="@style/MediaPlayer.OutlineButton" 273 android:text="@string/controls_media_dismiss_button" 274 /> 275 </FrameLayout> 276</com.android.systemui.util.animation.TransitionLayout>