Merge "Fully expand QSPanel on scroll" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
909281eb38
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user