chromium/chrome/browser/readaloud/android/java/res/layout/readaloud_mini_player_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2023 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<!-- MiniPlayerLayout is a LinearLayout. -->
<org.chromium.chrome.browser.readaloud.player.mini.MiniPlayerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/readaloud_mini_player"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="start|bottom"
    android:orientation="vertical"
    android:alpha="0"
    android:visibility="gone">

    <!-- Shadow -->
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="8dp"
        android:src="@drawable/modern_toolbar_shadow"
        android:scaleType="fitXY"
        android:scaleY="-1"
        android:importantForAccessibility="no"/>

    <FrameLayout
        android:id="@+id/backdrop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <!-- Middle layout containing everything but the progress bar. -->
        <RelativeLayout
            android:id="@+id/mini_player_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingHorizontal="16dp">

            <!-- Buffering/unknown layout. -->
            <LinearLayout
                android:id="@+id/buffering_layout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentStart="true"
                android:layout_toStartOf="@id/close_button"
                android:layout_centerVertical="true"
                android:orientation="horizontal">

                <!-- Loading spinner -->
                <ProgressBar
                    android:id="@+id/spinner"
                    style="?android:attr/progressBarStyleLarge"
                    android:layout_width="@dimen/readaloud_mini_player_play_button_diameter"
                    android:layout_height="@dimen/readaloud_mini_player_play_button_diameter"
                    android:layout_marginVertical="@dimen/readaloud_mini_player_play_button_margin_vertical"
                    android:layout_marginEnd="@dimen/readaloud_mini_player_play_button_margin_end"/>

                <!-- Loading message -->
                <TextView
                    android:id="@+id/loading_message"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:paddingEnd="@dimen/readaloud_mini_player_text_padding_end"
                    android:text="@string/readaloud_playback_loading"
                    android:textAppearance="@style/TextAppearance.TextMediumThick"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:clickable="false"
                    android:focusable="false"/>

            </LinearLayout>

            <!-- Error layout. -->
            <LinearLayout
                android:id="@+id/error_layout"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingStart="6dp"
                android:visibility="gone"
                android:layout_alignParentStart="true"
                android:layout_toStartOf="@id/close_button"
                android:layout_centerVertical="true"
                tools:ignore="UseCompoundDrawables">

                <ImageView
                    android:layout_width="24dp"
                    android:layout_height="24dp"
                    android:layout_marginVertical="22dp"
                    android:layout_marginEnd="@dimen/readaloud_mini_player_play_button_margin_end"
                    android:src="@drawable/error_24"
                    android:clickable="false"
                    android:focusable="false"
                    android:importantForAccessibility="no"/>

                <!-- Error message -->
                <TextView
                    android:id="@+id/error_message"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:paddingEnd="@dimen/readaloud_mini_player_text_padding_end"
                    android:text="@string/readaloud_playback_error"
                    android:textAppearance="@style/TextAppearance.TextMediumThick"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:clickable="false"
                    android:focusable="false"/>

            </LinearLayout>

            <!-- Ordinary playback layout: play button and text -->
            <LinearLayout
                android:id="@+id/normal_layout"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:visibility="gone"
                android:layout_alignParentStart="true"
                android:layout_toStartOf="@id/close_button">

                <!-- Play/pause button -->
                <ImageView
                    android:id="@+id/play_button"
                    android:layout_width="@dimen/readaloud_mini_player_play_button_diameter"
                    android:layout_height="@dimen/readaloud_mini_player_play_button_diameter"
                    android:layout_marginVertical="@dimen/readaloud_mini_player_play_button_margin_vertical"
                    android:layout_marginEnd="@dimen/readaloud_mini_player_play_button_margin_end"
                    android:src="@drawable/mini_play_button"
                    android:clickable="true"
                    android:focusable="true"
                    android:background="@drawable/rounded_ripple"
                    android:contentDescription="@string/readaloud_play"/>

                <!-- Title and publisher -->
                <LinearLayout
                    android:id="@+id/title_and_publisher"
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:paddingEnd="@dimen/readaloud_mini_player_text_padding_end"
                    android:orientation="vertical"
                    android:clickable="false"
                    android:focusable="false">
                    <TextView
                        android:id="@+id/title"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textAppearance="@style/TextAppearance.TextMediumThick"
                        android:ellipsize="end"
                        android:maxLines="1"/>
                    <TextView
                        android:id="@+id/publisher"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textAppearance="@style/TextAppearance.TextSmall"
                        android:ellipsize="end"
                        android:maxLines="1"/>
                </LinearLayout>
            </LinearLayout>

            <!-- Close button -->
            <ImageView
                android:id="@+id/close_button"
                android:src="@drawable/baseline_close_24"
                android:contentDescription="@string/readaloud_close_player_button_content_description"
                android:layout_width="@dimen/readaloud_close_button_size"
                android:layout_height="@dimen/readaloud_close_button_size"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:background="@drawable/rounded_ripple"
                android:scaleType="fitCenter"/>

        </RelativeLayout>

        <!-- Bottom progress bar -->
        <ProgressBar
            android:id="@+id/progress_bar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="match_parent"
            android:layout_height="4dp"
            android:layout_gravity="bottom"
            android:background="?attr/colorSurfaceVariant"
            android:max="1000"
            android:progress="0"
            android:progressTint="@macro/default_icon_color"
            android:progressTintMode="src_atop"
            android:visibility="gone"/>
    </FrameLayout>
</org.chromium.chrome.browser.readaloud.player.mini.MiniPlayerLayout>