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

Commit 8896557a authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Expansion animations

Add expansion animation to the header. Only put layout params that
change in the ConstraintSet so they are as small as possible. Layout
params that don't change are set in the layout file.

Test: manual
Bug: 202847414
Change-Id: Ibd61bd02a0266da87eabe3be3d307af74df2c3dd
parent 94f300df
Loading
Loading
Loading
Loading
+14 −24
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.constraintlayout.motion.widget.MotionLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/split_shade_status_bar"
@@ -26,7 +26,8 @@
    android:paddingLeft="@dimen/qs_panel_padding"
    android:paddingRight="@dimen/qs_panel_padding"
    android:visibility="gone"
    android:theme="@style/Theme.SystemUI.QuickSettings.Header">
    android:theme="@style/Theme.SystemUI.QuickSettings.Header"
    app:layoutDescription="@xml/combined_qs_header_scene">

    <androidx.constraintlayout.widget.Guideline
        android:layout_width="wrap_content"
@@ -39,76 +40,65 @@
        android:id="@+id/clock"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        app:layout_constraintHeight_min="@dimen/split_shade_header_min_height"
        android:gravity="start|center_vertical"
        android:paddingStart="@dimen/status_bar_left_clock_starting_padding"
        android:paddingEnd="@dimen/status_bar_left_clock_end_padding"
        android:singleLine="true"
        android:textAppearance="@style/TextAppearance.QS.Status"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@id/date"
    />

    <com.android.systemui.statusbar.policy.DateView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        app:layout_constraintHeight_min="@dimen/split_shade_header_min_height"
        android:layout_gravity="start|center_vertical"
        android:gravity="center_vertical"
        android:singleLine="true"
        android:textAppearance="@style/TextAppearance.QS.Status"
        app:datePattern="@string/abbrev_wday_month_day_no_year_alarm"
        app:layout_constraintStart_toEndOf="@id/clock"
        app:layout_constraintEnd_toStartOf="@id/carrier_group"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0"
    />

    <include
        android:id="@+id/carrier_group"
        layout="@layout/qs_carrier_group"
        app:layout_constraintHeight_min="@dimen/split_shade_header_min_height"
        android:minHeight="@dimen/split_shade_header_min_height"
        app:layout_constraintWidth_min="48dp"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintHeight_min="@dimen/split_shade_header_min_height"
        app:layout_constrainedWidth="true"
        android:layout_gravity="end|center_vertical"
        android:layout_marginStart="8dp"
        android:focusable="false"
        android:minHeight="@dimen/split_shade_header_min_height"
        android:minWidth="48dp"
        app:layout_constraintStart_toEndOf="@id/date"
        app:layout_constraintEnd_toStartOf="@id/statusIcons"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintTop_toTopOf="@id/clock"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="1"
    />

    <com.android.systemui.statusbar.phone.StatusIconContainer
        android:id="@+id/statusIcons"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        app:layout_constraintHeight_min="@dimen/split_shade_header_min_height"
        android:paddingEnd="@dimen/signal_cluster_battery_padding"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        app:layout_constraintStart_toEndOf="@id/carrier_group"
        app:layout_constraintEnd_toStartOf="@id/batteryRemainingIcon"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintTop_toTopOf="@id/clock"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="1"
    />

    <com.android.systemui.battery.BatteryMeterView
        android:id="@+id/batteryRemainingIcon"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_height="48dp"
        app:layout_constraintHeight_min="@dimen/split_shade_header_min_height"
        app:textAppearance="@style/TextAppearance.QS.Status"
        app:layout_constraintStart_toEndOf="@id/statusIcons"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintTop_toTopOf="@id/clock"
        app:layout_constraintBottom_toBottomOf="parent"
    />

</androidx.constraintlayout.widget.ConstraintLayout>
 No newline at end of file
</androidx.constraintlayout.motion.widget.MotionLayout>
 No newline at end of file
+50 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2021 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.
  -->
<MotionScene
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <Transition
        android:id="@+id/header_transition"
        app:constraintSetEnd="@id/qs_header_constraint"
        app:constraintSetStart="@id/qqs_header_constraint">
        <KeyFrameSet>
            <KeyPosition
                app:keyPositionType="pathRelative"
                app:percentX="0"
                app:framePosition="50"
                app:motionTarget="@id/date" />
        </KeyFrameSet>
    </Transition>

    <Transition
        android:id="@+id/split_header_transition"
        app:constraintSetStart="@id/split_header_constraint"
        app:constraintSetEnd="@id/split_header_constraint"/>

    <!--
        Placeholder ConstraintSet. They are populated in the controller for this class.
        This is needed because there's no easy way to just refer to a `ConstraintSet` file. The
        options are either a layout file or inline the ConstraintSets.
     -->
    <ConstraintSet android:id="@id/qqs_header_constraint"/>

    <ConstraintSet android:id="@id/qs_header_constraint"/>

    <ConstraintSet android:id="@id/split_header_constraint" />

</MotionScene>
+32 −53
Original line number Diff line number Diff line
@@ -17,10 +17,13 @@

<ConstraintSet
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/qqs_header_constraint"
>

    <Constraint
        android:id="@+id/clock"
        android:id="@+id/clock">
        <Layout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            app:layout_constraintStart_toStartOf="parent"
@@ -30,9 +33,11 @@
            app:layout_constraintHorizontal_bias="0"
            app:layout_constraintHorizontal_chainStyle="packed"
        />
    </Constraint>

    <Constraint
        android:id="@+id/date"
        android:id="@+id/date">
        <Layout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            app:layout_constraintStart_toEndOf="@id/clock"
@@ -41,42 +46,16 @@
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintHorizontal_bias="0"
        />
    </Constraint>

    <Constraint
        android:id="@+id/carrier_group"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constrainedWidth="true"
        android:layout_gravity="end|center_vertical"
        android:layout_marginStart="8dp"
        app:layout_constraintStart_toEndOf="@id/date"
        app:layout_constraintEnd_toStartOf="@id/statusIcons"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:visibility="invisible"
        app:layout_constraintHorizontal_bias="1"
        android:id="@+id/carrier_group">
        <CustomAttribute
            app:attributeName="alpha"
            app:customFloatValue="0"
        />
    </Constraint>

    <Constraint
        android:id="@+id/statusIcons"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        app:layout_constraintStart_toEndOf="@id/carrier_group"
        app:layout_constraintEnd_toStartOf="@id/batteryRemainingIcon"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="1"
    />

    <Constraint
        android:id="@+id/batteryRemainingIcon"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        app:layout_constraintStart_toEndOf="@id/statusIcons"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="1"
    />

</ConstraintSet>
 No newline at end of file
+34 −51
Original line number Diff line number Diff line
@@ -17,10 +17,13 @@

<ConstraintSet
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/qs_header_constraint"
>

    <Constraint
        android:id="@+id/clock"
        android:id="@+id/clock">
        <Layout
            android:layout_width="wrap_content"
            android:layout_height="48dp"
            app:layout_constraintStart_toStartOf="parent"
@@ -29,9 +32,11 @@
            app:layout_constraintEnd_toStartOf="@id/carrier_group"
            app:layout_constraintHorizontal_bias="0"
        />
    </Constraint>

    <Constraint
        android:id="@+id/date"
        android:id="@+id/date">
        <Layout
            android:layout_width="wrap_content"
            android:layout_height="48dp"
            app:layout_constraintStart_toStartOf="parent"
@@ -40,40 +45,18 @@
            app:layout_constraintBottom_toTopOf="@id/clock"
            app:layout_constraintHorizontal_bias="0"
        />

    <Constraint
        android:id="@+id/carrier_group"
        android:layout_width="0dp"
        android:layout_height="48dp"
        app:layout_constrainedWidth="true"
        android:layout_gravity="end|center_vertical"
        android:layout_marginStart="8dp"
        app:layout_constraintStart_toEndOf="@id/clock"
        app:layout_constraintEnd_toStartOf="@id/statusIcons"
        app:layout_constraintTop_toTopOf="@id/clock"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="1"
        <Motion
            app:motionStagger="0.5"
        />
    </Constraint>

    <Constraint
        android:id="@+id/statusIcons"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        app:layout_constraintStart_toEndOf="@id/carrier_group"
        app:layout_constraintEnd_toStartOf="@id/batteryRemainingIcon"
        app:layout_constraintTop_toTopOf="@id/clock"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="1"
        android:id="@+id/carrier_group">
        <CustomAttribute
            app:attributeName="alpha"
            app:customFloatValue="1"
        />
    </Constraint>

    <Constraint
        android:id="@+id/batteryRemainingIcon"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        app:layout_constraintStart_toEndOf="@id/statusIcons"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@id/clock"
        app:layout_constraintBottom_toBottomOf="parent"
    />

</ConstraintSet>
 No newline at end of file
+29 −49
Original line number Diff line number Diff line
@@ -17,10 +17,12 @@

<ConstraintSet
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/split_header_constraint">

    <Constraint
        android:id="@+id/clock"
        android:id="@+id/clock">
        <Layout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            app:layout_constraintStart_toStartOf="parent"
@@ -28,9 +30,11 @@
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@id/date"
        />
    </Constraint>

    <Constraint
        android:id="@+id/date"
        android:id="@+id/date">
        <Layout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            app:layout_constraintStart_toEndOf="@id/clock"
@@ -39,39 +43,15 @@
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintHorizontal_bias="0"
        />
    </Constraint>

    <Constraint
        android:id="@+id/carrier_group"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constrainedWidth="true"
        android:layout_gravity="end|center_vertical"
        android:layout_marginStart="8dp"
        app:layout_constraintStart_toEndOf="@id/date"
        app:layout_constraintEnd_toStartOf="@id/statusIcons"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="1"
    />

    <Constraint
        android:id="@+id/statusIcons"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        app:layout_constraintStart_toEndOf="@id/carrier_group"
        app:layout_constraintEnd_toStartOf="@id/batteryRemainingIcon"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:id="@+id/carrier_group">
        <PropertySet
            android:alpha="1"
            app:customFloatValue="1"
        />
    </Constraint>

    <Constraint
        android:id="@+id/batteryRemainingIcon"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        app:layout_constraintStart_toEndOf="@id/statusIcons"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
    />

</ConstraintSet>
 No newline at end of file
Loading