xref: /aosp_15_r20/frameworks/base/packages/SystemUI/res/layout/clipboard_overlay.xml (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
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>