Fixed an issue where media could become invisible

Fixes: 192939241
Test: follow steps on bug, observe media visible
Change-Id: I41fee551e97418640a054f6ee0152ec337172c56
This commit is contained in:
Selim Cinek
2021-07-06 17:20:17 +02:00
committed by Beth Thibodeau
parent 5f5e03d3ef
commit 0c8aead89f
3 changed files with 34 additions and 4 deletions

View File

@@ -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;
}

View File

@@ -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

View File

@@ -103,6 +103,9 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
private boolean mUsingHorizontalLayout;
@Nullable
private Runnable mUsingHorizontalLayoutChangedListener;
protected QSPanelControllerBase(
T view,
QSTileHost host,
@@ -135,6 +138,13 @@ public abstract class QSPanelControllerBase<T extends QSPanel> 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<T extends QSPanel> 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<T extends QSPanel> 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;