Merge "Fully expand QSPanel on scroll" into sc-dev

This commit is contained in:
Fabian Kozynski
2021-07-01 13:22:05 +00:00
committed by Android (Google) Code Review
4 changed files with 38 additions and 5 deletions

View File

@@ -35,7 +35,7 @@ public interface QS extends FragmentBase {
String ACTION = "com.android.systemui.action.PLUGIN_QS"; String ACTION = "com.android.systemui.action.PLUGIN_QS";
int VERSION = 10; int VERSION = 11;
String TAG = "QS"; String TAG = "QS";
@@ -108,6 +108,20 @@ public interface QS extends FragmentBase {
*/ */
void setCollapsedMediaVisibilityChangedListener(Consumer<Boolean> listener); void setCollapsedMediaVisibilityChangedListener(Consumer<Boolean> listener);
/**
* Set a scroll listener for the QSPanel container
*/
default void setScrollListener(ScrollListener scrollListener) {}
/**
* Callback for when QSPanel container is scrolled
*/
@ProvidesInterface(version = ScrollListener.VERSION)
interface ScrollListener {
int VERSION = 1;
void onQsPanelScrollChanged(int scrollY);
}
@ProvidesInterface(version = HeightListener.VERSION) @ProvidesInterface(version = HeightListener.VERSION)
interface HeightListener { interface HeightListener {
int VERSION = 1; int VERSION = 1;

View File

@@ -215,7 +215,7 @@ public class QSContainerImpl extends FrameLayout {
public void setExpansion(float expansion) { public void setExpansion(float expansion) {
mQsExpansion = expansion; mQsExpansion = expansion;
mQSPanelContainer.setScrollingEnabled(expansion > 0.0f); mQSPanelContainer.setScrollingEnabled(expansion > 0f);
updateExpansion(); updateExpansion();
} }

View File

@@ -108,6 +108,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
private QSPanelController mQSPanelController; private QSPanelController mQSPanelController;
private QuickQSPanelController mQuickQSPanelController; private QuickQSPanelController mQuickQSPanelController;
private QSCustomizerController mQSCustomizerController; private QSCustomizerController mQSCustomizerController;
private ScrollListener mScrollListener;
private FeatureFlags mFeatureFlags; private FeatureFlags mFeatureFlags;
/** /**
* When true, QS will translate from outside the screen. It will be clipped with parallax * When true, QS will translate from outside the screen. It will be clipped with parallax
@@ -171,9 +172,12 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
}); });
mQSPanelScrollView.setOnScrollChangeListener( mQSPanelScrollView.setOnScrollChangeListener(
(v, scrollX, scrollY, oldScrollX, oldScrollY) -> { (v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
// Lazily update animators whenever the scrolling changes // Lazily update animators whenever the scrolling changes
mQSAnimator.onQsScrollingChanged(); mQSAnimator.onQsScrollingChanged();
mHeader.setExpandedScrollAmount(scrollY); mHeader.setExpandedScrollAmount(scrollY);
if (mScrollListener != null) {
mScrollListener.onQsPanelScrollChanged(scrollY);
}
}); });
mQSDetail = view.findViewById(R.id.qs_detail); mQSDetail = view.findViewById(R.id.qs_detail);
mHeader = view.findViewById(R.id.header); mHeader = view.findViewById(R.id.header);
@@ -213,6 +217,11 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
}); });
} }
@Override
public void setScrollListener(ScrollListener listener) {
mScrollListener = listener;
}
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
@@ -222,6 +231,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
} }
mQSCustomizerController.setQs(null); mQSCustomizerController.setQs(null);
mQsDetailDisplayer.setQsPanelController(null); mQsDetailDisplayer.setQsPanelController(null);
mScrollListener = null;
} }
@Override @Override

View File

@@ -3477,6 +3477,14 @@ public class NotificationPanelViewController extends PanelViewController {
return !isFullWidth() || !mShowIconsWhenExpanded; return !isFullWidth() || !mShowIconsWhenExpanded;
} }
public final QS.ScrollListener mScrollListener = scrollY -> {
if (scrollY > 0 && !mQsFullyExpanded) {
if (DEBUG) Log.d(TAG, "Scrolling while not expanded. Forcing expand");
// If we are scrolling QS, we should be fully expanded.
expandWithQs();
}
};
private final FragmentListener mFragmentListener = new FragmentListener() { private final FragmentListener mFragmentListener = new FragmentListener() {
@Override @Override
public void onFragmentViewCreated(String tag, Fragment fragment) { public void onFragmentViewCreated(String tag, Fragment fragment) {
@@ -3506,6 +3514,7 @@ public class NotificationPanelViewController extends PanelViewController {
}); });
mLockscreenShadeTransitionController.setQS(mQs); mLockscreenShadeTransitionController.setQS(mQs);
mNotificationStackScrollLayoutController.setQsContainer((ViewGroup) mQs.getView()); mNotificationStackScrollLayoutController.setQsContainer((ViewGroup) mQs.getView());
mQs.setScrollListener(mScrollListener);
updateQsExpansion(); updateQsExpansion();
} }