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

Commit 8304b95f authored by Selim Cinek's avatar Selim Cinek
Browse files

Implemented Lockscreen to shade transition

When dragging down on the lockscreen, we now pull down the quick
settings while dragging instead of wating for the release

Bug: 184946919
Test: atest SystemUITests
Change-Id: Ib233282dd7ce4ba63ceab3e1b788aa164e88c8c0
parent 91579bde
Loading
Loading
Loading
Loading
+22 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.systemui.animation;
package com.android.systemui.animation;


import android.util.MathUtils;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.BounceInterpolator;
import android.view.animation.BounceInterpolator;
@@ -71,6 +72,27 @@ public class Interpolators {
    public static final Interpolator TOUCH_RESPONSE_REVERSE =
    public static final Interpolator TOUCH_RESPONSE_REVERSE =
            new PathInterpolator(0.9f, 0f, 0.7f, 1f);
            new PathInterpolator(0.9f, 0f, 0.7f, 1f);


    /**
     * Calculate the amount of overshoot using an exponential falloff function with desired
     * properties, where the overshoot smoothly transitions at the 1.0f boundary into the
     * overshoot, retaining its acceleration.
     *
     * @param progress a progress value going from 0 to 1
     * @param overshootAmount the amount > 0 of overshoot desired. A value of 0.1 means the max
     *                        value of the overall progress will be at 1.1.
     * @param overshootStart the point in (0,1] where the result should reach 1
     * @return the interpolated overshoot
     */
    public static float getOvershootInterpolation(float progress, float overshootAmount,
            float overshootStart) {
        if (overshootAmount == 0.0f || overshootStart == 0.0f) {
            throw new IllegalArgumentException("Invalid values for overshoot");
        }
        float b = MathUtils.log((overshootAmount + 1) / (overshootAmount)) / overshootStart;
        return MathUtils.max(0.0f,
                (float) (1.0f - Math.exp(-b * progress)) * (overshootAmount + 1.0f));
    }

    /**
    /**
     * Interpolate alpha for notifications background scrim during shade expansion.
     * Interpolate alpha for notifications background scrim during shade expansion.
     * @param fraction Shade expansion fraction
     * @param fraction Shade expansion fraction
+21 −3
Original line number Original line Diff line number Diff line
@@ -33,7 +33,7 @@ public interface QS extends FragmentBase {


    String ACTION = "com.android.systemui.action.PLUGIN_QS";
    String ACTION = "com.android.systemui.action.PLUGIN_QS";


    int VERSION = 8;
    int VERSION = 9;


    String TAG = "QS";
    String TAG = "QS";


@@ -50,8 +50,13 @@ public interface QS extends FragmentBase {
    void setListening(boolean listening);
    void setListening(boolean listening);
    boolean isShowingDetail();
    boolean isShowingDetail();
    void closeDetail();
    void closeDetail();
    default void setShowCollapsedOnKeyguard(boolean showCollapsedOnKeyguard) {}

    void animateHeaderSlidingIn(long delay);
    /**
     * Set that we're currently pulse expanding
     *
     * @param pulseExpanding if we're currently expanding during pulsing
     */
    default void setPulseExpanding(boolean pulseExpanding) {}
    void animateHeaderSlidingOut();
    void animateHeaderSlidingOut();
    void setQsExpansion(float qsExpansionFraction, float headerTranslation);
    void setQsExpansion(float qsExpansionFraction, float headerTranslation);
    void setHeaderListening(boolean listening);
    void setHeaderListening(boolean listening);
@@ -78,11 +83,24 @@ public interface QS extends FragmentBase {
     */
     */
    void setTranslateWhileExpanding(boolean shouldTranslate);
    void setTranslateWhileExpanding(boolean shouldTranslate);


    /**
     * Set the amount of pixels we have currently dragged down if we're transitioning to the full
     * shade. 0.0f means we're not transitioning yet.
     */
    default void setTransitionToFullShadeAmount(float pxAmount, boolean animated) {}

    /**
    /**
     * A rounded corner clipping that makes QS feel as if it were behind everything.
     * A rounded corner clipping that makes QS feel as if it were behind everything.
     */
     */
    void setFancyClipping(int top, int bottom, int cornerRadius, boolean visible);
    void setFancyClipping(int top, int bottom, int cornerRadius, boolean visible);


    /**
     * @return if quick settings is fully collapsed currently
     */
    default boolean isFullyCollapsed() {
        return true;
    }

    @ProvidesInterface(version = HeightListener.VERSION)
    @ProvidesInterface(version = HeightListener.VERSION)
    interface HeightListener {
    interface HeightListener {
        int VERSION = 1;
        int VERSION = 1;
+1 −8
Original line number Original line Diff line number Diff line
@@ -21,8 +21,7 @@
    android:id="@+id/keyguard_bottom_area"
    android:id="@+id/keyguard_bottom_area"
    android:layout_height="match_parent"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:layout_width="match_parent"
    android:outlineProvider="none"
    android:outlineProvider="none" > <!-- Put it above the status bar header -->
    android:elevation="5dp" > <!-- Put it above the status bar header -->


    <LinearLayout
    <LinearLayout
        android:id="@+id/keyguard_indication_area"
        android:id="@+id/keyguard_indication_area"
@@ -58,12 +57,6 @@


    </LinearLayout>
    </LinearLayout>


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

    <com.android.systemui.statusbar.KeyguardAffordanceView
    <com.android.systemui.statusbar.KeyguardAffordanceView
        android:id="@+id/camera_button"
        android:id="@+id/camera_button"
        android:layout_height="@dimen/keyguard_affordance_height"
        android:layout_height="@dimen/keyguard_affordance_height"
+36 −18
Original line number Original line Diff line number Diff line
@@ -37,6 +37,25 @@
        android:layout_height="match_parent"
        android:layout_height="match_parent"
        android:layout_width="match_parent" />
        android:layout_width="match_parent" />


    <include
        layout="@layout/keyguard_bottom_area"
        android:visibility="gone" />

    <ViewStub
        android:id="@+id/keyguard_user_switcher_stub"
        android:layout="@layout/keyguard_user_switcher"
        android:layout_height="match_parent"
        android:layout_width="match_parent" />

    <include layout="@layout/status_bar_expanded_plugin_frame"/>

    <include layout="@layout/dock_info_bottom_area_overlay" />

    <com.android.keyguard.LockIconView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/lock_icon_view" />

    <com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer
    <com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer
        android:layout_width="match_parent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_height="match_parent"
@@ -49,6 +68,18 @@
            layout="@layout/keyguard_status_view"
            layout="@layout/keyguard_status_view"
            android:visibility="gone"/>
            android:visibility="gone"/>


        <com.android.systemui.scrim.ScrimView
            android:id="@+id/scrim_notifications"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:importantForAccessibility="no"
            systemui:ignoreRightInset="true"
            systemui:layout_constraintStart_toStartOf="parent"
            systemui:layout_constraintEnd_toEndOf="parent"
            systemui:layout_constraintTop_toTopOf="parent"
            systemui:layout_constraintBottom_toBottomOf="parent"
            />

        <include layout="@layout/dock_info_overlay" />
        <include layout="@layout/dock_info_overlay" />


        <FrameLayout
        <FrameLayout
@@ -101,22 +132,9 @@


    </com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer>
    </com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer>


    <include layout="@layout/dock_info_bottom_area_overlay" />
    <FrameLayout

        android:id="@+id/preview_container"
    <include
        android:layout_width="match_parent"
        layout="@layout/keyguard_bottom_area"
        android:layout_height="match_parent">
        android:visibility="gone" />
    </FrameLayout>

    <ViewStub
        android:id="@+id/keyguard_user_switcher_stub"
        android:layout="@layout/keyguard_user_switcher"
        android:layout_height="match_parent"
        android:layout_width="match_parent" />

    <include layout="@layout/status_bar_expanded_plugin_frame"/>

    <com.android.keyguard.LockIconView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/lock_icon_view" />
</com.android.systemui.statusbar.phone.NotificationPanelView>
</com.android.systemui.statusbar.phone.NotificationPanelView>
+0 −8
Original line number Original line Diff line number Diff line
@@ -51,14 +51,6 @@
        sysui:ignoreRightInset="true"
        sysui:ignoreRightInset="true"
        />
        />


    <com.android.systemui.scrim.ScrimView
        android:id="@+id/scrim_notifications"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:importantForAccessibility="no"
        sysui:ignoreRightInset="true"
        />

    <com.android.systemui.statusbar.LightRevealScrim
    <com.android.systemui.statusbar.LightRevealScrim
            android:id="@+id/light_reveal_scrim"
            android:id="@+id/light_reveal_scrim"
            android:layout_width="match_parent"
            android:layout_width="match_parent"
Loading