Merge "Hide bubbles whenever the status bar is hidden, unless there's a flyout." into rvc-dev am: 21f26f1cad
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11709058 Change-Id: I96c1a2ae82351fe4a710f92a21b155ae263b6e22
This commit is contained in:
@@ -577,6 +577,18 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
|
|||||||
return mBubbleScrim;
|
return mBubbleScrim;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the status bar has become visible or invisible (either permanently or
|
||||||
|
* temporarily).
|
||||||
|
*/
|
||||||
|
public void onStatusBarVisibilityChanged(boolean visible) {
|
||||||
|
if (mStackView != null) {
|
||||||
|
// Hide the stack temporarily if the status bar has been made invisible, and the stack
|
||||||
|
// is collapsed. An expanded stack should remain visible until collapsed.
|
||||||
|
mStackView.setTemporarilyInvisible(!visible && !isStackExpanded());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether to perform inflation on the same thread as the caller. This method should only
|
* Sets whether to perform inflation on the same thread as the caller. This method should only
|
||||||
* be used in tests, not in production.
|
* be used in tests, not in production.
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ import androidx.dynamicanimation.animation.SpringForce;
|
|||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.internal.util.ContrastColorUtil;
|
import com.android.internal.util.ContrastColorUtil;
|
||||||
import com.android.internal.widget.ViewClippingUtil;
|
import com.android.internal.widget.ViewClippingUtil;
|
||||||
|
import com.android.systemui.Interpolators;
|
||||||
import com.android.systemui.Prefs;
|
import com.android.systemui.Prefs;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.bubbles.animation.ExpandedAnimationController;
|
import com.android.systemui.bubbles.animation.ExpandedAnimationController;
|
||||||
@@ -89,6 +90,7 @@ import com.android.systemui.model.SysUiState;
|
|||||||
import com.android.systemui.shared.system.QuickStepContract;
|
import com.android.systemui.shared.system.QuickStepContract;
|
||||||
import com.android.systemui.shared.system.SysUiStatsLog;
|
import com.android.systemui.shared.system.SysUiStatsLog;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
||||||
|
import com.android.systemui.statusbar.phone.CollapsedStatusBarFragment;
|
||||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
||||||
import com.android.systemui.util.DismissCircleView;
|
import com.android.systemui.util.DismissCircleView;
|
||||||
import com.android.systemui.util.FloatingContentCoordinator;
|
import com.android.systemui.util.FloatingContentCoordinator;
|
||||||
@@ -243,6 +245,9 @@ public class BubbleStackView extends FrameLayout
|
|||||||
/** Whether a touch gesture, such as a stack/bubble drag or flyout drag, is in progress. */
|
/** Whether a touch gesture, such as a stack/bubble drag or flyout drag, is in progress. */
|
||||||
private boolean mIsGestureInProgress = false;
|
private boolean mIsGestureInProgress = false;
|
||||||
|
|
||||||
|
/** Whether or not the stack is temporarily invisible off the side of the screen. */
|
||||||
|
private boolean mTemporarilyInvisible = false;
|
||||||
|
|
||||||
/** Description of current animation controller state. */
|
/** Description of current animation controller state. */
|
||||||
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
|
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
|
||||||
pw.println("Stack view state:");
|
pw.println("Stack view state:");
|
||||||
@@ -919,6 +924,38 @@ public class BubbleStackView extends FrameLayout
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
animate()
|
||||||
|
.setInterpolator(Interpolators.PANEL_CLOSE_ACCELERATED)
|
||||||
|
.setDuration(CollapsedStatusBarFragment.FADE_IN_DURATION);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether or not the stack should become temporarily invisible by moving off the side of
|
||||||
|
* the screen.
|
||||||
|
*
|
||||||
|
* If a flyout comes in while it's invisible, it will animate back in while the flyout is
|
||||||
|
* showing but disappear again when the flyout is gone.
|
||||||
|
*/
|
||||||
|
public void setTemporarilyInvisible(boolean invisible) {
|
||||||
|
mTemporarilyInvisible = invisible;
|
||||||
|
animateTemporarilyInvisible();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Animates onto or off the screen depending on whether we're temporarily invisible, and whether
|
||||||
|
* a flyout is visible.
|
||||||
|
*/
|
||||||
|
private void animateTemporarilyInvisible() {
|
||||||
|
if (mTemporarilyInvisible && mFlyout.getVisibility() != View.VISIBLE) {
|
||||||
|
if (mStackAnimationController.isStackOnLeftSide()) {
|
||||||
|
animate().translationX(-mBubbleSize).start();
|
||||||
|
} else {
|
||||||
|
animate().translationX(mBubbleSize).start();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
animate().translationX(0).start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpManageMenu() {
|
private void setUpManageMenu() {
|
||||||
@@ -1989,6 +2026,9 @@ public class BubbleStackView extends FrameLayout
|
|||||||
// Stop suppressing the dot now that the flyout has morphed into the dot.
|
// Stop suppressing the dot now that the flyout has morphed into the dot.
|
||||||
bubbleView.removeDotSuppressionFlag(
|
bubbleView.removeDotSuppressionFlag(
|
||||||
BadgedImageView.SuppressionFlag.FLYOUT_VISIBLE);
|
BadgedImageView.SuppressionFlag.FLYOUT_VISIBLE);
|
||||||
|
|
||||||
|
mFlyout.setVisibility(INVISIBLE);
|
||||||
|
animateTemporarilyInvisible();
|
||||||
};
|
};
|
||||||
mFlyout.setVisibility(INVISIBLE);
|
mFlyout.setVisibility(INVISIBLE);
|
||||||
|
|
||||||
@@ -2006,6 +2046,7 @@ public class BubbleStackView extends FrameLayout
|
|||||||
final Runnable expandFlyoutAfterDelay = () -> {
|
final Runnable expandFlyoutAfterDelay = () -> {
|
||||||
mAnimateInFlyout = () -> {
|
mAnimateInFlyout = () -> {
|
||||||
mFlyout.setVisibility(VISIBLE);
|
mFlyout.setVisibility(VISIBLE);
|
||||||
|
animateTemporarilyInvisible();
|
||||||
mFlyoutDragDeltaX =
|
mFlyoutDragDeltaX =
|
||||||
mStackAnimationController.isStackOnLeftSide()
|
mStackAnimationController.isStackOnLeftSide()
|
||||||
? -mFlyout.getWidth()
|
? -mFlyout.getWidth()
|
||||||
|
|||||||
@@ -2253,6 +2253,8 @@ public class StatusBar extends SystemUI implements DemoMode,
|
|||||||
updateHideIconsForBouncer(false /* animate */);
|
updateHideIconsForBouncer(false /* animate */);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateBubblesVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -2268,6 +2270,8 @@ public class StatusBar extends SystemUI implements DemoMode,
|
|||||||
}
|
}
|
||||||
mLightBarController.onStatusBarAppearanceChanged(appearanceRegions, barModeChanged,
|
mLightBarController.onStatusBarAppearanceChanged(appearanceRegions, barModeChanged,
|
||||||
mStatusBarMode, navbarColorManagedByIme);
|
mStatusBarMode, navbarColorManagedByIme);
|
||||||
|
|
||||||
|
updateBubblesVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -2311,6 +2315,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
|||||||
final int barMode = barMode(mTransientShown, mAppearance);
|
final int barMode = barMode(mTransientShown, mAppearance);
|
||||||
if (updateBarMode(barMode)) {
|
if (updateBarMode(barMode)) {
|
||||||
mLightBarController.onStatusBarModeChanged(barMode);
|
mLightBarController.onStatusBarModeChanged(barMode);
|
||||||
|
updateBubblesVisibility();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2395,6 +2400,14 @@ public class StatusBar extends SystemUI implements DemoMode,
|
|||||||
mNotificationPanelViewController.setQsScrimEnabled(scrimEnabled);
|
mNotificationPanelViewController.setQsScrimEnabled(scrimEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Temporarily hides Bubbles if the status bar is hidden. */
|
||||||
|
private void updateBubblesVisibility() {
|
||||||
|
mBubbleController.onStatusBarVisibilityChanged(
|
||||||
|
mStatusBarMode != MODE_LIGHTS_OUT
|
||||||
|
&& mStatusBarMode != MODE_LIGHTS_OUT_TRANSPARENT
|
||||||
|
&& !mStatusBarWindowHidden);
|
||||||
|
}
|
||||||
|
|
||||||
void checkBarMode(@TransitionMode int mode, @WindowVisibleState int windowState,
|
void checkBarMode(@TransitionMode int mode, @WindowVisibleState int windowState,
|
||||||
BarTransitions transitions) {
|
BarTransitions transitions) {
|
||||||
final boolean anim = !mNoAnimationOnNextBarModeChange && mDeviceInteractive
|
final boolean anim = !mNoAnimationOnNextBarModeChange && mDeviceInteractive
|
||||||
|
|||||||
Reference in New Issue
Block a user