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

Commit 0b0910f4 authored by Christian Göllner's avatar Christian Göllner Committed by Automerger Merge Worker
Browse files

Merge "[Motion] Split-shade expansion: implement over scroll effect [v1]" into...

Merge "[Motion] Split-shade expansion: implement over scroll effect [v1]" into tm-dev am: fa9d138b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17859843



Change-Id: I4e5bbb8b296806db2b7e21c0cc73f4c7c30b6865
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 1fa13eff fa9d138b
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -1179,6 +1179,10 @@
    <!-- Maximum over scroll amount for the shade when transition to the full shade. -->
    <!-- Maximum over scroll amount for the shade when transition to the full shade. -->
    <dimen name="lockscreen_shade_max_over_scroll_amount">24dp</dimen>
    <dimen name="lockscreen_shade_max_over_scroll_amount">24dp</dimen>


    <!-- Maximum over scroll amount for the shade when transition to the full shade.
         Only used for split-shade. -->
    <dimen name="shade_max_over_scroll_amount">@dimen/lockscreen_shade_max_over_scroll_amount</dimen>

    <!-- Maximum overshoot for the pulse expansion -->
    <!-- Maximum overshoot for the pulse expansion -->
    <dimen name="pulse_expansion_max_top_overshoot">32dp</dimen>
    <dimen name="pulse_expansion_max_top_overshoot">32dp</dimen>


+5 −0
Original line number Original line Diff line number Diff line
@@ -117,6 +117,7 @@ import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent;
import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent;
import com.android.systemui.statusbar.phone.shade.transition.ShadeTransitionController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
@@ -178,6 +179,7 @@ public class NotificationStackScrollLayoutController {
    private final CentralSurfaces mCentralSurfaces;
    private final CentralSurfaces mCentralSurfaces;
    private final SectionHeaderController mSilentHeaderController;
    private final SectionHeaderController mSilentHeaderController;
    private final LockscreenShadeTransitionController mLockscreenShadeTransitionController;
    private final LockscreenShadeTransitionController mLockscreenShadeTransitionController;
    private final ShadeTransitionController mShadeTransitionController;
    private final InteractionJankMonitor mJankMonitor;
    private final InteractionJankMonitor mJankMonitor;
    private final NotificationStackSizeCalculator mNotificationStackSizeCalculator;
    private final NotificationStackSizeCalculator mNotificationStackSizeCalculator;
    private final StackStateLogger mStackStateLogger;
    private final StackStateLogger mStackStateLogger;
@@ -647,6 +649,7 @@ public class NotificationStackScrollLayoutController {
            NotifCollection notifCollection,
            NotifCollection notifCollection,
            NotificationEntryManager notificationEntryManager,
            NotificationEntryManager notificationEntryManager,
            LockscreenShadeTransitionController lockscreenShadeTransitionController,
            LockscreenShadeTransitionController lockscreenShadeTransitionController,
            ShadeTransitionController shadeTransitionController,
            IStatusBarService iStatusBarService,
            IStatusBarService iStatusBarService,
            UiEventLogger uiEventLogger,
            UiEventLogger uiEventLogger,
            LayoutInflater layoutInflater,
            LayoutInflater layoutInflater,
@@ -675,6 +678,7 @@ public class NotificationStackScrollLayoutController {
        mLockscreenUserManager = lockscreenUserManager;
        mLockscreenUserManager = lockscreenUserManager;
        mMetricsLogger = metricsLogger;
        mMetricsLogger = metricsLogger;
        mLockscreenShadeTransitionController = lockscreenShadeTransitionController;
        mLockscreenShadeTransitionController = lockscreenShadeTransitionController;
        mShadeTransitionController = shadeTransitionController;
        mFalsingCollector = falsingCollector;
        mFalsingCollector = falsingCollector;
        mFalsingManager = falsingManager;
        mFalsingManager = falsingManager;
        mResources = resources;
        mResources = resources;
@@ -769,6 +773,7 @@ public class NotificationStackScrollLayoutController {
        mScrimController.setScrimBehindChangeRunnable(mView::updateBackgroundDimming);
        mScrimController.setScrimBehindChangeRunnable(mView::updateBackgroundDimming);


        mLockscreenShadeTransitionController.setStackScroller(this);
        mLockscreenShadeTransitionController.setStackScroller(this);
        mShadeTransitionController.setNotificationStackScrollLayoutController(this);


        mLockscreenUserManager.addUserChangedListener(mLockscreenUserChangeListener);
        mLockscreenUserManager.addUserChangedListener(mLockscreenUserChangeListener);


+7 −1
Original line number Original line Diff line number Diff line
@@ -179,6 +179,7 @@ import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent;
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.phone.panelstate.PanelState;
import com.android.systemui.statusbar.phone.panelstate.PanelState;
import com.android.systemui.statusbar.phone.shade.transition.ShadeTransitionController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardQsUserSwitchController;
import com.android.systemui.statusbar.policy.KeyguardQsUserSwitchController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -310,6 +311,7 @@ public class NotificationPanelViewController extends PanelViewController {
    private final NotificationRemoteInputManager mRemoteInputManager;
    private final NotificationRemoteInputManager mRemoteInputManager;


    private final LockscreenShadeTransitionController mLockscreenShadeTransitionController;
    private final LockscreenShadeTransitionController mLockscreenShadeTransitionController;
    private final ShadeTransitionController mShadeTransitionController;
    private final TapAgainViewController mTapAgainViewController;
    private final TapAgainViewController mTapAgainViewController;
    private final LargeScreenShadeHeaderController mLargeScreenShadeHeaderController;
    private final LargeScreenShadeHeaderController mLargeScreenShadeHeaderController;
    private final RecordingController mRecordingController;
    private final RecordingController mRecordingController;
@@ -745,7 +747,8 @@ public class NotificationPanelViewController extends PanelViewController {
            NotificationListContainer notificationListContainer,
            NotificationListContainer notificationListContainer,
            PanelEventsEmitter panelEventsEmitter,
            PanelEventsEmitter panelEventsEmitter,
            NotificationStackSizeCalculator notificationStackSizeCalculator,
            NotificationStackSizeCalculator notificationStackSizeCalculator,
            UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) {
            UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
            ShadeTransitionController shadeTransitionController) {
        super(view,
        super(view,
                falsingManager,
                falsingManager,
                dozeLog,
                dozeLog,
@@ -826,7 +829,9 @@ public class NotificationPanelViewController extends PanelViewController {
        mKeyguardBypassController = bypassController;
        mKeyguardBypassController = bypassController;
        mUpdateMonitor = keyguardUpdateMonitor;
        mUpdateMonitor = keyguardUpdateMonitor;
        mLockscreenShadeTransitionController = lockscreenShadeTransitionController;
        mLockscreenShadeTransitionController = lockscreenShadeTransitionController;
        mShadeTransitionController = shadeTransitionController;
        lockscreenShadeTransitionController.setNotificationPanelController(this);
        lockscreenShadeTransitionController.setNotificationPanelController(this);
        shadeTransitionController.setNotificationPanelViewController(this);
        DynamicPrivacyControlListener
        DynamicPrivacyControlListener
                dynamicPrivacyControlListener =
                dynamicPrivacyControlListener =
                new DynamicPrivacyControlListener();
                new DynamicPrivacyControlListener();
@@ -3625,6 +3630,7 @@ public class NotificationPanelViewController extends PanelViewController {
                }
                }
            });
            });
            mLockscreenShadeTransitionController.setQS(mQs);
            mLockscreenShadeTransitionController.setQS(mQs);
            mShadeTransitionController.setQs(mQs);
            mNotificationStackScrollLayoutController.setQsHeader((ViewGroup) mQs.getHeader());
            mNotificationStackScrollLayoutController.setQsHeader((ViewGroup) mQs.getHeader());
            mQs.setScrollListener(mScrollListener);
            mQs.setScrollListener(mScrollListener);
            updateQsExpansion();
            updateQsExpansion();
+13 −7
Original line number Original line Diff line number Diff line
@@ -109,6 +109,8 @@ public abstract class PanelViewController {
     */
     */
    private boolean mIsSpringBackAnimation;
    private boolean mIsSpringBackAnimation;


    private boolean mInSplitShade;

    private void logf(String fmt, Object... args) {
    private void logf(String fmt, Object... args) {
        Log.v(TAG, (mViewName != null ? (mViewName + ": ") : "") + String.format(fmt, args));
        Log.v(TAG, (mViewName != null ? (mViewName + ": ") : "") + String.format(fmt, args));
    }
    }
@@ -304,8 +306,9 @@ public abstract class PanelViewController {
        mSlopMultiplier = configuration.getScaledAmbiguousGestureMultiplier();
        mSlopMultiplier = configuration.getScaledAmbiguousGestureMultiplier();
        mHintDistance = mResources.getDimension(R.dimen.hint_move_distance);
        mHintDistance = mResources.getDimension(R.dimen.hint_move_distance);
        mPanelFlingOvershootAmount = mResources.getDimension(R.dimen.panel_overshoot_amount);
        mPanelFlingOvershootAmount = mResources.getDimension(R.dimen.panel_overshoot_amount);
        mUnlockFalsingThreshold = mResources.getDimensionPixelSize(
        mUnlockFalsingThreshold =
                R.dimen.unlock_falsing_threshold);
                mResources.getDimensionPixelSize(R.dimen.unlock_falsing_threshold);
        mInSplitShade = mResources.getBoolean(R.bool.config_use_split_notification_shade);
    }
    }


    protected float getTouchSlop(MotionEvent event) {
    protected float getTouchSlop(MotionEvent event) {
@@ -601,7 +604,9 @@ public abstract class PanelViewController {
        }
        }
        mIsFlinging = true;
        mIsFlinging = true;
        // we want to perform an overshoot animation when flinging open
        // we want to perform an overshoot animation when flinging open
        final boolean addOverscroll = expand
        final boolean addOverscroll =
                expand
                        && !mInSplitShade // Split shade has its own overscroll logic
                        && mStatusBarStateController.getState() != StatusBarState.KEYGUARD
                        && mStatusBarStateController.getState() != StatusBarState.KEYGUARD
                        && mOverExpansion == 0.0f
                        && mOverExpansion == 0.0f
                        && vel >= 0;
                        && vel >= 0;
@@ -778,7 +783,8 @@ public abstract class PanelViewController {
            }
            }
            float maxPanelHeight = getMaxPanelHeight();
            float maxPanelHeight = getMaxPanelHeight();
            if (mHeightAnimator == null) {
            if (mHeightAnimator == null) {
                if (mTracking) {
                // Split shade has its own overscroll logic
                if (mTracking && !mInSplitShade) {
                    float overExpansionPixels = Math.max(0, h - maxPanelHeight);
                    float overExpansionPixels = Math.max(0, h - maxPanelHeight);
                    setOverExpansionInternal(overExpansionPixels, true /* isFromGesture */);
                    setOverExpansionInternal(overExpansionPixels, true /* isFromGesture */);
                }
                }
+1 −1
Original line number Original line Diff line number Diff line
@@ -17,7 +17,7 @@
package com.android.systemui.statusbar.phone.panelstate
package com.android.systemui.statusbar.phone.panelstate


/** A listener interface to be notified of state change events for the notification panel. */
/** A listener interface to be notified of state change events for the notification panel. */
interface PanelStateListener {
fun interface PanelStateListener {
    /** Called when the panel's expansion state has changed.   */
    /** Called when the panel's expansion state has changed.   */
    fun onPanelStateChanged(@PanelState state: Int)
    fun onPanelStateChanged(@PanelState state: Int)
}
}
Loading