1<?xml version="1.0" encoding="utf-8"?> 2<!-- 3 ~ Copyright (C) 2021 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<com.android.systemui.clipboardoverlay.ClipboardOverlayView 18 xmlns:android="http://schemas.android.com/apk/res/android" 19 xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" 20 xmlns:app="http://schemas.android.com/apk/res-auto" 21 android:id="@+id/clipboard_ui" 22 android:theme="@style/FloatingOverlay" 23 android:alpha="0" 24 android:layout_width="match_parent" 25 android:layout_height="match_parent" 26 android:contentDescription="@string/clipboard_overlay_window_name"> 27 <!-- Min edge spacing guideline off of which the preview and actions can be anchored (without 28 this we'd need to express margins as the sum of two different dimens). --> 29 <androidx.constraintlayout.widget.Guideline 30 android:layout_width="wrap_content" 31 android:layout_height="wrap_content" 32 android:id="@+id/min_edge_guideline" 33 app:layout_constraintGuide_begin="@dimen/overlay_action_container_minimum_edge_spacing" 34 android:orientation="vertical"/> 35 <!-- This toast-like indication layout was forked from text_toast.xml and will have the same 36 appearance as system toast. --> 37 <FrameLayout 38 android:id="@+id/indication_container" 39 android:visibility="gone" 40 android:layout_width="wrap_content" 41 android:layout_height="wrap_content" 42 android:gravity="center" 43 android:maxWidth="@*android:dimen/toast_width" 44 android:background="@android:drawable/toast_frame" 45 android:elevation="@*android:dimen/toast_elevation" 46 android:paddingStart="16dp" 47 android:paddingEnd="16dp" 48 android:layout_marginEnd="@dimen/overlay_action_container_margin_horizontal" 49 android:layout_marginStart="@dimen/overlay_action_container_margin_horizontal" 50 android:layout_marginBottom="@dimen/overlay_action_container_margin_bottom" 51 app:layout_constraintStart_toStartOf="parent" 52 app:layout_constraintBottom_toBottomOf="parent"> 53 <TextView 54 android:id="@+id/indication_text" 55 android:layout_width="wrap_content" 56 android:layout_height="wrap_content" 57 android:ellipsize="end" 58 android:maxLines="2" 59 android:paddingTop="12dp" 60 android:paddingBottom="12dp" 61 android:textAppearance="@*android:style/TextAppearance.Toast"/> 62 </FrameLayout> 63 <!-- Negative horizontal margin because this container background must render beyond the thing 64 it's constrained by (the actions themselves). --> 65 <FrameLayout 66 android:id="@+id/actions_container_background" 67 android:visibility="gone" 68 android:layout_height="0dp" 69 android:layout_width="0dp" 70 android:elevation="4dp" 71 android:background="@drawable/shelf_action_chip_container_background" 72 android:layout_marginStart="@dimen/negative_overlay_action_container_minimum_edge_spacing" 73 android:layout_marginEnd="@dimen/negative_overlay_action_container_minimum_edge_spacing" 74 android:layout_marginBottom="@dimen/overlay_action_container_margin_bottom" 75 app:layout_constraintStart_toStartOf="@id/min_edge_guideline" 76 app:layout_constraintTop_toTopOf="@id/actions_container" 77 app:layout_constraintEnd_toEndOf="@id/actions_container" 78 app:layout_constraintBottom_toTopOf="@id/indication_container"/> 79 <HorizontalScrollView 80 android:id="@+id/actions_container" 81 android:layout_width="0dp" 82 android:layout_height="wrap_content" 83 android:layout_marginEnd="@dimen/overlay_action_container_margin_horizontal" 84 android:paddingEnd="@dimen/overlay_action_container_padding_end" 85 android:paddingVertical="@dimen/overlay_action_container_padding_vertical" 86 android:elevation="4dp" 87 android:scrollbars="none" 88 app:layout_constraintHorizontal_bias="0" 89 app:layout_constraintWidth_percent="1.0" 90 app:layout_constraintWidth_max="wrap" 91 app:layout_constraintStart_toEndOf="@+id/preview_border" 92 app:layout_constraintEnd_toEndOf="parent" 93 app:layout_constraintBottom_toBottomOf="@id/actions_container_background"> 94 <LinearLayout 95 android:id="@+id/actions" 96 android:layout_width="wrap_content" 97 android:layout_height="wrap_content" 98 android:paddingStart="@dimen/shelf_action_chip_margin_start" 99 android:showDividers="middle" 100 android:divider="@drawable/shelf_action_chip_divider" 101 android:animateLayoutChanges="true"> 102 <include layout="@layout/shelf_action_chip" 103 android:id="@+id/share_chip"/> 104 <include layout="@layout/shelf_action_chip" 105 android:id="@+id/remote_copy_chip"/> 106 </LinearLayout> 107 </HorizontalScrollView> 108 <View 109 android:id="@+id/preview_border" 110 android:layout_width="0dp" 111 android:layout_height="0dp" 112 android:layout_marginStart="@dimen/overlay_preview_container_margin" 113 android:layout_marginTop="@dimen/overlay_border_width_neg" 114 android:layout_marginEnd="@dimen/overlay_border_width_neg" 115 android:layout_marginBottom="@dimen/overlay_preview_container_margin" 116 android:elevation="7dp" 117 android:background="@drawable/overlay_border" 118 app:layout_constraintStart_toStartOf="@id/min_edge_guideline" 119 app:layout_constraintTop_toTopOf="@id/clipboard_preview" 120 app:layout_constraintEnd_toEndOf="@id/clipboard_preview" 121 app:layout_constraintBottom_toBottomOf="@id/actions_container_background"/> 122 <FrameLayout 123 android:id="@+id/clipboard_preview" 124 android:layout_width="@dimen/clipboard_preview_size" 125 android:layout_height="wrap_content" 126 android:layout_marginStart="@dimen/overlay_border_width" 127 android:layout_marginBottom="@dimen/overlay_border_width" 128 android:layout_gravity="center" 129 android:elevation="7dp" 130 android:background="@drawable/overlay_preview_background" 131 android:clipChildren="true" 132 android:clipToOutline="true" 133 android:clipToPadding="true" 134 app:layout_constraintStart_toStartOf="@id/preview_border" 135 app:layout_constraintBottom_toBottomOf="@id/preview_border"> 136 <TextView android:id="@+id/text_preview" 137 android:textFontWeight="500" 138 android:padding="8dp" 139 android:gravity="center|start" 140 android:ellipsize="end" 141 android:autoSizeTextType="uniform" 142 android:autoSizeMinTextSize="@dimen/clipboard_overlay_min_font" 143 android:autoSizeMaxTextSize="@dimen/clipboard_overlay_max_font" 144 android:textColor="?attr/overlayButtonTextColor" 145 android:textColorLink="?attr/overlayButtonTextColor" 146 android:background="?androidprv:attr/colorAccentSecondary" 147 android:layout_width="@dimen/clipboard_preview_size" 148 android:layout_height="@dimen/clipboard_preview_size"/> 149 <ImageView 150 android:id="@+id/image_preview" 151 android:scaleType="fitCenter" 152 android:adjustViewBounds="true" 153 android:contentDescription="@string/clipboard_image_preview" 154 android:layout_width="match_parent" 155 android:layout_height="wrap_content"/> 156 <TextView 157 android:id="@+id/hidden_preview" 158 android:visibility="gone" 159 android:textFontWeight="500" 160 android:padding="8dp" 161 android:gravity="center" 162 android:textSize="14sp" 163 android:textColor="?attr/overlayButtonTextColor" 164 android:background="?androidprv:attr/colorAccentSecondary" 165 android:layout_width="@dimen/clipboard_preview_size" 166 android:layout_height="@dimen/clipboard_preview_size"/> 167 </FrameLayout> 168 <LinearLayout 169 android:id="@+id/minimized_preview" 170 android:layout_width="wrap_content" 171 android:layout_height="wrap_content" 172 android:visibility="gone" 173 android:elevation="7dp" 174 android:padding="8dp" 175 app:layout_constraintBottom_toTopOf="@id/indication_container" 176 app:layout_constraintStart_toStartOf="parent" 177 android:layout_marginStart="@dimen/overlay_action_container_margin_horizontal" 178 android:layout_marginBottom="@dimen/overlay_action_container_margin_bottom" 179 android:background="@drawable/clipboard_minimized_background"> 180 <ImageView 181 android:src="@drawable/ic_content_paste" 182 android:tint="?attr/overlayButtonTextColor" 183 android:layout_width="24dp" 184 android:layout_height="24dp"/> 185 <ImageView 186 android:src="@*android:drawable/ic_chevron_end" 187 android:tint="?attr/overlayButtonTextColor" 188 android:layout_width="24dp" 189 android:layout_height="24dp" 190 android:paddingEnd="-8dp" 191 android:paddingStart="-4dp"/> 192 </LinearLayout> 193 <androidx.constraintlayout.widget.Barrier 194 android:id="@+id/clipboard_content_top" 195 android:layout_width="wrap_content" 196 android:layout_height="wrap_content" 197 android:orientation="horizontal" 198 app:barrierDirection="top" 199 app:constraint_referenced_ids="clipboard_preview,minimized_preview"/> 200 <androidx.constraintlayout.widget.Barrier 201 android:id="@+id/clipboard_content_end" 202 android:layout_width="wrap_content" 203 android:layout_height="wrap_content" 204 android:orientation="vertical" 205 app:barrierDirection="end" 206 app:constraint_referenced_ids="clipboard_preview,minimized_preview"/> 207 <FrameLayout 208 android:id="@+id/dismiss_button" 209 android:layout_width="@dimen/overlay_dismiss_button_tappable_size" 210 android:layout_height="@dimen/overlay_dismiss_button_tappable_size" 211 android:elevation="10dp" 212 android:visibility="gone" 213 android:alpha="0" 214 app:layout_constraintStart_toEndOf="@id/clipboard_content_end" 215 app:layout_constraintEnd_toEndOf="@id/clipboard_content_end" 216 app:layout_constraintTop_toTopOf="@id/clipboard_content_top" 217 app:layout_constraintBottom_toTopOf="@id/clipboard_content_top" 218 android:contentDescription="@string/clipboard_dismiss_description"> 219 <ImageView 220 android:id="@+id/dismiss_image" 221 android:layout_width="match_parent" 222 android:layout_height="match_parent" 223 android:layout_margin="@dimen/overlay_dismiss_button_margin" 224 android:background="@drawable/circular_background" 225 android:backgroundTint="?androidprv:attr/materialColorPrimaryFixedDim" 226 android:tint="?androidprv:attr/materialColorOnPrimaryFixed" 227 android:padding="4dp" 228 android:src="@drawable/ic_close"/> 229 </FrameLayout> 230</com.android.systemui.clipboardoverlay.ClipboardOverlayView>