Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b5a4375e authored by Anton Potapov's avatar Anton Potapov
Browse files

Make ConstraintLayout the root of the VolumeDialog

This achieves two purposes:
1) Allows us to align the dialog based on the slider position instead of
   simply centering it;
2) MotionLayout transition for half-folded state to animate dialog
   position when folding;

Flag: com.android.systemui.volume_redesign
Bug: 369994090
Test: manual on the foldable
Change-Id: I54868663984544fb3809e9e2b8c6fe7e16ee058d
parent c7ebd302
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
    <item>
        <shape>
            <size android:width="@dimen/volume_dialog_width" />
            <solid android:color="?androidprv:attr/materialColorSurface" />
            <corners android:topLeftRadius="@dimen/volume_dialog_background_corner_radius"
                android:topRightRadius="@dimen/volume_dialog_background_corner_radius"/>
+0 −23
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?><!--
    Copyright (C) 2024 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.
-->

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size
        android:width="@dimen/volume_dialog_spacing"
        android:height="@dimen/volume_dialog_spacing" />
    <solid android:color="@color/transparent" />
</shape>
+57 −45
Original line number Diff line number Diff line
@@ -13,58 +13,70 @@
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/volume_dialog_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/volume_dialog_container"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|end"
        android:divider="@drawable/volume_dialog_floating_sliders_spacer"
        android:orientation="horizontal"
        android:showDividers="middle|end|beginning">

        <LinearLayout
            android:id="@+id/volume_dialog_floating_sliders_container"
            android:layout_width="wrap_content"
    android:layout_height="match_parent"
            android:divider="@drawable/volume_dialog_floating_sliders_spacer"
            android:gravity="bottom"
            android:orientation="horizontal"
            android:paddingBottom="@dimen/volume_dialog_floating_sliders_bottom_padding"
            android:showDividers="middle" />
    app:layoutDescription="@xml/volume_dialog_scene">

        <LinearLayout
            android:id="@+id/volume_dialog"
    <View
        android:id="@+id/volume_dialog_background"
        android:layout_width="@dimen/volume_dialog_width"
            android:layout_height="wrap_content"
        android:layout_height="0dp"
        android:layout_marginTop="@dimen/volume_dialog_background_vertical_margin"
        android:layout_marginBottom="@dimen/volume_dialog_background_vertical_margin"
        android:background="@drawable/volume_dialog_background"
            android:clipChildren="false"
            android:clipToOutline="false"
            android:clipToPadding="false"
            android:divider="@drawable/volume_dialog_spacer"
            android:gravity="center_horizontal"
            android:orientation="vertical"
            android:paddingVertical="@dimen/volume_dialog_vertical_padding"
            android:showDividers="middle">
        app:layout_constraintBottom_toBottomOf="@id/volume_dialog_settings"
        app:layout_constraintEnd_toEndOf="@id/volume_dialog_main_slider_container"
        app:layout_constraintStart_toStartOf="@id/volume_dialog_main_slider_container"
        app:layout_constraintTop_toTopOf="@id/volume_ringer_and_drawer_container" />

            <include layout="@layout/volume_ringer_drawer" />
    <include
        android:id="@id/volume_ringer_and_drawer_container"
        layout="@layout/volume_ringer_drawer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/volume_dialog_components_spacing"
        app:layout_constraintBottom_toTopOf="@id/volume_dialog_main_slider_container"
        app:layout_constraintEnd_toEndOf="@id/volume_dialog_main_slider_container"
        app:layout_constraintStart_toStartOf="@id/volume_dialog_main_slider_container"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="1" />

            <include layout="@layout/volume_dialog_slider" />
    <include
        android:id="@+id/volume_dialog_main_slider_container"
        layout="@layout/volume_dialog_slider" />

    <ImageButton
        android:id="@+id/volume_dialog_settings"
        android:layout_width="@dimen/volume_dialog_button_size"
        android:layout_height="@dimen/volume_dialog_button_size"
        android:layout_marginTop="@dimen/volume_dialog_components_spacing"
        android:background="@drawable/ripple_drawable_20dp"
        android:contentDescription="@string/accessibility_volume_settings"
        android:soundEffectsEnabled="false"
        android:src="@drawable/horizontal_ellipsis"
                android:tint="?androidprv:attr/materialColorPrimary" />
        </LinearLayout>
    </LinearLayout>
</FrameLayout>
 No newline at end of file
        android:tint="?androidprv:attr/materialColorPrimary"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@id/volume_dialog_main_slider_container"
        app:layout_constraintStart_toStartOf="@id/volume_dialog_main_slider_container"
        app:layout_constraintTop_toBottomOf="@id/volume_dialog_main_slider_container"
        app:layout_constraintVertical_bias="0" />

    <LinearLayout
        android:id="@+id/volume_dialog_floating_sliders_container"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_marginTop="@dimen/volume_dialog_floating_sliders_vertical_padding_negative"
        android:layout_marginBottom="@dimen/volume_dialog_floating_sliders_vertical_padding_negative"
        android:divider="@drawable/volume_dialog_floating_sliders_spacer"
        android:gravity="bottom"
        android:orientation="horizontal"
        android:showDividers="middle|beginning|end"
        app:layout_constraintBottom_toBottomOf="@id/volume_dialog_main_slider_container"
        app:layout_constraintEnd_toStartOf="@id/volume_dialog_background"
        app:layout_constraintTop_toTopOf="@id/volume_dialog_main_slider_container" />

</androidx.constraintlayout.motion.widget.MotionLayout>
 No newline at end of file
+4 −8
Original line number Diff line number Diff line
@@ -19,13 +19,10 @@
    android:id="@+id/volume_ringer_and_drawer_container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:paddingLeft="@dimen/volume_dialog_ringer_horizontal_padding"
    android:paddingRight="@dimen/volume_dialog_ringer_horizontal_padding"
    android:layoutDirection="ltr"
    android:clipToPadding="false"
    android:clipChildren="false"
    android:background="@drawable/volume_background_top">
    android:clipToPadding="false"
    android:gravity="center"
    android:layoutDirection="ltr">

    <!-- Drawer view, invisible by default. -->
    <FrameLayout
@@ -37,10 +34,10 @@
        <!-- View that is animated to a tapped ringer selection, so it appears selected. -->
        <FrameLayout
            android:id="@+id/volume_drawer_selection_background"
            android:alpha="0.0"
            android:layout_width="@dimen/volume_dialog_ringer_drawer_button_size"
            android:layout_height="@dimen/volume_dialog_ringer_drawer_button_size"
            android:layout_gravity="bottom|right"
            android:alpha="0.0"
            android:background="@drawable/volume_drawer_selection_bg" />

        <LinearLayout
@@ -65,7 +62,6 @@
        android:background="@drawable/volume_drawer_selection_bg"
        android:contentDescription="@string/volume_ringer_change"
        android:gravity="center"
        android:padding="@dimen/volume_dialog_ringer_horizontal_padding"
        android:src="@drawable/ic_volume_media"
        android:tint="?androidprv:attr/materialColorOnPrimary" />

+11 −8
Original line number Diff line number Diff line
@@ -2060,26 +2060,29 @@
    <dimen name="contextual_edu_dialog_elevation">2dp</dimen>

    <!-- Volume start -->
    <dimen name="volume_dialog_background_corner_radius">30dp</dimen>
    <dimen name="volume_dialog_width">60dp</dimen>
    <dimen name="volume_dialog_vertical_padding">10dp</dimen>

    <dimen name="volume_dialog_background_corner_radius">30dp</dimen>
    <dimen name="volume_dialog_background_vertical_margin">-10dp</dimen>

    <dimen name="volume_dialog_components_spacing">8dp</dimen>
    <dimen name="volume_dialog_floating_sliders_spacing">8dp</dimen>
    <dimen name="volume_dialog_floating_sliders_vertical_padding">10dp</dimen>
    <dimen name="volume_dialog_floating_sliders_vertical_padding_negative">-10dp</dimen>
    <dimen name="volume_dialog_floating_sliders_horizontal_padding">4dp</dimen>
    <dimen name="volume_dialog_spacing">4dp</dimen>
    <dimen name="volume_dialog_button_size">48dp</dimen>
    <dimen name="volume_dialog_floating_sliders_bottom_padding">48dp</dimen>
    <dimen name="volume_dialog_slider_width">52dp</dimen>
    <dimen name="volume_dialog_slider_height">254dp</dimen>

    <dimen name="volume_panel_slice_vertical_padding">8dp</dimen>
    <dimen name="volume_panel_slice_horizontal_padding">24dp</dimen>
    <fraction name="volume_dialog_half_opened_bias">0.2</fraction>

    <dimen name="volume_dialog_background_square_corner_radius">12dp</dimen>

    <dimen name="volume_dialog_ringer_horizontal_padding">10dp</dimen>
    <dimen name="volume_dialog_ringer_drawer_button_size">40dp</dimen>
    <dimen name="volume_dialog_ringer_drawer_button_icon_radius">10dp</dimen>
    <dimen name="volume_dialog_background_square_corner_radius">12dp</dimen>
    <dimen name="volume_dialog_ringer_selected_button_background_radius">20dp</dimen>

    <dimen name="volume_panel_slice_vertical_padding">8dp</dimen>
    <dimen name="volume_panel_slice_horizontal_padding">24dp</dimen>
    <!-- Volume end -->
</resources>
Loading