From 0c8aead89f8ac3e8e58555d16c86ba0802421348 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Tue, 6 Jul 2021 17:20:17 +0200 Subject: [PATCH] Fixed an issue where media could become invisible Fixes: 192939241 Test: follow steps on bug, observe media visible Change-Id: I41fee551e97418640a054f6ee0152ec337172c56 --- .../com/android/systemui/qs/QSAnimator.java | 8 +++++--- .../com/android/systemui/qs/QSFragment.java | 10 +++++++++- .../systemui/qs/QSPanelControllerBase.java | 20 +++++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java index 8c2c373fae640..a3180738fa60f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java @@ -140,9 +140,11 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha updateAnimators(); } - - public void onQsScrollingChanged() { - // Lazily update animators whenever the scrolling changes + /** + * Request an update to the animators. This will update them lazily next time the position + * is changed. + */ + public void requestAnimatorUpdate() { mNeedsAnimatorUpdate = true; } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java index 0d91f29b5b2e7..36b4ee987d99d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -173,7 +173,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca mQSPanelScrollView.setOnScrollChangeListener( (v, scrollX, scrollY, oldScrollX, oldScrollY) -> { // Lazily update animators whenever the scrolling changes - mQSAnimator.onQsScrollingChanged(); + mQSAnimator.requestAnimatorUpdate(); mHeader.setExpandedScrollAmount(scrollY); if (mScrollListener != null) { mScrollListener.onQsPanelScrollChanged(scrollY); @@ -215,6 +215,14 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca setQsExpansion(mLastQSExpansion, mLastHeaderTranslation); } }); + mQSPanelController.setUsingHorizontalLayoutChangeListener( + () -> { + // The hostview may be faded out in the horizontal layout. Let's make sure to + // reset the alpha when switching layouts. This is fine since the animator will + // update the alpha if it's not supposed to be 1.0f + mQSPanelController.getMediaHost().getHostView().setAlpha(1.0f); + mQSAnimator.requestAnimatorUpdate(); + }); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index 7a0982688b498..4739a3f4c7d69 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -103,6 +103,9 @@ public abstract class QSPanelControllerBase extends ViewContr private boolean mUsingHorizontalLayout; + @Nullable + private Runnable mUsingHorizontalLayoutChangedListener; + protected QSPanelControllerBase( T view, QSTileHost host, @@ -135,6 +138,13 @@ public abstract class QSPanelControllerBase extends ViewContr mQSLogger.logAllTilesChangeListening(mView.isListening(), mView.getDumpableTag(), ""); } + /** + * @return the media host for this panel + */ + public MediaHost getMediaHost() { + return mMediaHost; + } + @Override protected void onViewAttached() { mQsTileRevealController = createTileRevealController(); @@ -303,6 +313,9 @@ public abstract class QSPanelControllerBase extends ViewContr mUsingHorizontalLayout = horizontal; mView.setUsingHorizontalLayout(mUsingHorizontalLayout, mMediaHost.getHostView(), force); updateMediaDisappearParameters(); + if (mUsingHorizontalLayoutChangedListener != null) { + mUsingHorizontalLayoutChangedListener.run(); + } return true; } return false; @@ -386,6 +399,13 @@ public abstract class QSPanelControllerBase extends ViewContr mMediaVisibilityChangedListener = listener; } + /** + * Add a listener when the horizontal layout changes + */ + public void setUsingHorizontalLayoutChangeListener(Runnable listener) { + mUsingHorizontalLayoutChangedListener = listener; + } + /** */ public static final class TileRecord extends QSPanel.Record { public QSTile tile;