Merge changes I30a2fa4f,I1abd1561 into rvc-dev
* changes: Fix cliping when the media player is fully clipped off Fixed some cases where we were animating Qs even though we shouldn't
This commit is contained in:
committed by
Android (Google) Code Review
commit
5bbeb33ec9
@@ -15,6 +15,7 @@ import com.android.systemui.plugins.FalsingManager
|
||||
import com.android.systemui.qs.PageIndicator
|
||||
import com.android.systemui.statusbar.notification.VisualStabilityManager
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||
import com.android.systemui.util.Utils
|
||||
import com.android.systemui.util.animation.UniqueObjectHostView
|
||||
import com.android.systemui.util.animation.requiresRemeasuring
|
||||
import com.android.systemui.util.concurrency.DelayableExecutor
|
||||
@@ -150,8 +151,15 @@ class MediaCarouselController @Inject constructor(
|
||||
mediaManager.addListener(object : MediaDataManager.Listener {
|
||||
override fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) {
|
||||
oldKey?.let { mediaData.remove(it) }
|
||||
mediaData.put(key, data)
|
||||
addOrUpdatePlayer(key, oldKey, data)
|
||||
if (!data.active && !Utils.useMediaResumption(context)) {
|
||||
// This view is inactive, let's remove this! This happens e.g when dismissing /
|
||||
// timing out a view. We still have the data around because resumption could
|
||||
// be on, but we should save the resources and release this.
|
||||
onMediaDataRemoved(key)
|
||||
} else {
|
||||
mediaData.put(key, data)
|
||||
addOrUpdatePlayer(key, oldKey, data)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onMediaDataRemoved(key: String) {
|
||||
|
||||
@@ -139,6 +139,18 @@ class MediaHierarchyManager @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the shade currently collapsing from the expanded qs? If we're on the lockscreen and in qs,
|
||||
* we wouldn't want to transition in that case.
|
||||
*/
|
||||
var collapsingShadeFromQS: Boolean = false
|
||||
set(value) {
|
||||
if (field != value) {
|
||||
field = value
|
||||
updateDesiredLocation(forceNoAnimation = true)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Are location changes currently blocked?
|
||||
*/
|
||||
@@ -160,6 +172,19 @@ class MediaHierarchyManager @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Are we currently fullyAwake
|
||||
*/
|
||||
private var fullyAwake: Boolean = false
|
||||
set(value) {
|
||||
if (field != value) {
|
||||
field = value
|
||||
if (value) {
|
||||
updateDesiredLocation(forceNoAnimation = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the doze animation currently Running
|
||||
*/
|
||||
@@ -206,10 +231,12 @@ class MediaHierarchyManager @Inject constructor(
|
||||
|
||||
override fun onStartedGoingToSleep() {
|
||||
goingToSleep = true
|
||||
fullyAwake = false
|
||||
}
|
||||
|
||||
override fun onFinishedWakingUp() {
|
||||
goingToSleep = false
|
||||
fullyAwake = true
|
||||
}
|
||||
|
||||
override fun onStartedWakingUp() {
|
||||
@@ -531,6 +558,18 @@ class MediaHierarchyManager @Inject constructor(
|
||||
!statusBarStateController.isDozing) {
|
||||
return LOCATION_QS
|
||||
}
|
||||
if (location == LOCATION_LOCKSCREEN && desiredLocation == LOCATION_QS &&
|
||||
collapsingShadeFromQS) {
|
||||
// When collapsing on the lockscreen, we want to remain in QS
|
||||
return LOCATION_QS
|
||||
}
|
||||
if (location != LOCATION_LOCKSCREEN && desiredLocation == LOCATION_LOCKSCREEN
|
||||
&& !fullyAwake) {
|
||||
// When unlocking from dozing / while waking up, the media shouldn't be transitioning
|
||||
// in an animated way. Let's keep it in the lockscreen until we're fully awake and
|
||||
// reattach it without an animation
|
||||
return LOCATION_LOCKSCREEN
|
||||
}
|
||||
return location
|
||||
}
|
||||
|
||||
|
||||
@@ -443,6 +443,7 @@ public class NotificationPanelViewController extends PanelViewController {
|
||||
*/
|
||||
private boolean mDelayShowingKeyguardStatusBar;
|
||||
|
||||
private boolean mAnimatingQS;
|
||||
private int mOldLayoutDirection;
|
||||
|
||||
private View.AccessibilityDelegate mAccessibilityDelegate = new View.AccessibilityDelegate() {
|
||||
@@ -1860,6 +1861,7 @@ public class NotificationPanelViewController extends PanelViewController {
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mAnimatingQS = false;
|
||||
notifyExpandingFinished();
|
||||
mNotificationStackScroller.resetCheckSnoozeLeavebehind();
|
||||
mQsExpansionAnimator = null;
|
||||
@@ -1868,6 +1870,9 @@ public class NotificationPanelViewController extends PanelViewController {
|
||||
}
|
||||
}
|
||||
});
|
||||
// Let's note that we're animating QS. Moving the animator here will cancel it immediately,
|
||||
// so we need a separate flag.
|
||||
mAnimatingQS = true;
|
||||
animator.start();
|
||||
mQsExpansionAnimator = animator;
|
||||
mQsAnimatorExpand = expanding;
|
||||
@@ -2220,6 +2225,9 @@ public class NotificationPanelViewController extends PanelViewController {
|
||||
mNotificationStackScroller.onExpansionStarted();
|
||||
mIsExpanding = true;
|
||||
mQsExpandedWhenExpandingStarted = mQsFullyExpanded;
|
||||
mMediaHierarchyManager.setCollapsingShadeFromQS(mQsExpandedWhenExpandingStarted &&
|
||||
/* We also start expanding when flinging closed Qs. Let's exclude that */
|
||||
!mAnimatingQS);
|
||||
if (mQsExpanded) {
|
||||
onQsExpansionStarted();
|
||||
}
|
||||
@@ -2236,6 +2244,7 @@ public class NotificationPanelViewController extends PanelViewController {
|
||||
mHeadsUpManager.onExpandingFinished();
|
||||
mConversationNotificationManager.onNotificationPanelExpandStateChanged(isFullyCollapsed());
|
||||
mIsExpanding = false;
|
||||
mMediaHierarchyManager.setCollapsingShadeFromQS(false);
|
||||
if (isFullyCollapsed()) {
|
||||
DejankUtils.postAfterTraversal(new Runnable() {
|
||||
@Override
|
||||
|
||||
@@ -150,15 +150,10 @@ class TransitionLayout @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
override fun dispatchDraw(canvas: Canvas?) {
|
||||
val clip = !boundsRect.isEmpty
|
||||
if (clip) {
|
||||
canvas?.save()
|
||||
canvas?.clipRect(boundsRect)
|
||||
}
|
||||
canvas?.save()
|
||||
canvas?.clipRect(boundsRect)
|
||||
super.dispatchDraw(canvas)
|
||||
if (clip) {
|
||||
canvas?.restore()
|
||||
}
|
||||
canvas?.restore()
|
||||
}
|
||||
|
||||
private fun updateBounds() {
|
||||
|
||||
Reference in New Issue
Block a user