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";
int VERSION = 10;
int VERSION = 11;
String TAG = "QS";
@@ -108,6 +108,20 @@ public interface QS extends FragmentBase {
*/
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)
interface HeightListener {
int VERSION = 1;

View File

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

View File

@@ -108,6 +108,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
private QSPanelController mQSPanelController;
private QuickQSPanelController mQuickQSPanelController;
private QSCustomizerController mQSCustomizerController;
private ScrollListener mScrollListener;
private FeatureFlags mFeatureFlags;
/**
* 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(
(v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
// Lazily update animators whenever the scrolling changes
mQSAnimator.onQsScrollingChanged();
mHeader.setExpandedScrollAmount(scrollY);
// Lazily update animators whenever the scrolling changes
mQSAnimator.onQsScrollingChanged();
mHeader.setExpandedScrollAmount(scrollY);
if (mScrollListener != null) {
mScrollListener.onQsPanelScrollChanged(scrollY);
}
});
mQSDetail = view.findViewById(R.id.qs_detail);
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
public void onDestroy() {
super.onDestroy();
@@ -222,6 +231,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
}
mQSCustomizerController.setQs(null);
mQsDetailDisplayer.setQsPanelController(null);
mScrollListener = null;
}
@Override

View File

@@ -3477,6 +3477,14 @@ public class NotificationPanelViewController extends PanelViewController {
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() {
@Override
public void onFragmentViewCreated(String tag, Fragment fragment) {
@@ -3506,6 +3514,7 @@ public class NotificationPanelViewController extends PanelViewController {
});
mLockscreenShadeTransitionController.setQS(mQs);
mNotificationStackScrollLayoutController.setQsContainer((ViewGroup) mQs.getView());
mQs.setScrollListener(mScrollListener);
updateQsExpansion();
}