From 15781d6022f1219aeb08c49f89a3ad836fad9cc8 Mon Sep 17 00:00:00 2001 From: Amin Shaikh Date: Fri, 16 Feb 2018 16:00:13 -0500 Subject: [PATCH] Remove QS scrolling. Use PagedTileLayout instead of QSScrollView for displaying tiles in QS. Bug: 73362439 Test: visual Change-Id: I17136c30467aa62e4ba64dcdb646b6da8b5a5f51 --- .../SystemUI/res/layout/qs_footer_impl.xml | 6 --- packages/SystemUI/res/layout/qs_panel.xml | 1 + .../com/android/systemui/qs/QSAnimator.java | 3 ++ .../com/android/systemui/qs/QSFooterImpl.java | 3 -- .../com/android/systemui/qs/QSFragment.java | 2 +- .../src/com/android/systemui/qs/QSPanel.java | 53 +++++++------------ .../com/android/systemui/qs/QuickQSPanel.java | 3 +- 7 files changed, 26 insertions(+), 45 deletions(-) diff --git a/packages/SystemUI/res/layout/qs_footer_impl.xml b/packages/SystemUI/res/layout/qs_footer_impl.xml index cf88adee7a62a..f635b180a68d5 100644 --- a/packages/SystemUI/res/layout/qs_footer_impl.xml +++ b/packages/SystemUI/res/layout/qs_footer_impl.xml @@ -27,12 +27,6 @@ android:clipChildren="false" android:clipToPadding="false"> - - diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java index 222c6e8274f53..c3f7eb1b2ffc3 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java @@ -249,9 +249,11 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha // Fade in the tiles/labels as we reach the final position. mFirstPageDelayedAnimator = new TouchAnimator.Builder() .setStartDelay(EXPANDED_TILE_DELAY) + .addFloat(mQsPanel.getPageIndicator(), "alpha", 0, 1) .addFloat(tileLayout, "alpha", 0, 1) .addFloat(mQsPanel.getDivider(), "alpha", 0, 1) .addFloat(mQsPanel.getFooter().getView(), "alpha", 0, 1).build(); + mAllViews.add(mQsPanel.getPageIndicator()); mAllViews.add(mQsPanel.getDivider()); mAllViews.add(mQsPanel.getFooter().getView()); float px = 0; @@ -269,6 +271,7 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha } mNonfirstPageAnimator = new TouchAnimator.Builder() .addFloat(mQuickQsPanel, "alpha", 1, 0) + .addFloat(mQsPanel.getPageIndicator(), "alpha", 0, 1) .addFloat(mQsPanel.getDivider(), "alpha", 0, 1) .setListener(mNonFirstPageListener) .setEndDelay(.5f) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java index b9919a3f5c123..4f79dcda34688 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java @@ -87,7 +87,6 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, private View mActionsContainer; private View mDragHandle; private final int mDragHandleExpandOffset; - private View mBackground; public QSFooterImpl(Context context, AttributeSet attrs) { super(context, attrs); @@ -100,7 +99,6 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, @Override protected void onFinishInflate() { super.onFinishInflate(); - mBackground = findViewById(R.id.qs_footer_background); mDivider = findViewById(R.id.qs_footer_divider); mEdit = findViewById(android.R.id.edit); mEdit.setOnClickListener(view -> @@ -170,7 +168,6 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, @Nullable private TouchAnimator createFooterAnimator() { return new TouchAnimator.Builder() - .addFloat(mBackground, "alpha", 0, 0.90f) .addFloat(mDivider, "alpha", 0, 1) .addFloat(mCarrierText, "alpha", 0, 1) .addFloat(mActionsContainer, "alpha", 0, 1) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java index d8e10516fe694..d437f49d0e961 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -209,7 +209,7 @@ public class QSFragment extends Fragment implements QS { @Override public boolean onInterceptTouchEvent(MotionEvent event) { - return isCustomizing() || mQSPanel.onInterceptTouchEvent(event); + return isCustomizing(); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index f7c388db0840b..cdcc5e6a83b48 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -26,7 +26,6 @@ import android.metrics.LogMaker; import android.os.Handler; import android.os.Message; import android.service.quicksettings.Tile; -import android.support.v4.widget.Space; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -63,6 +62,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne protected final ArrayList mRecords = new ArrayList(); protected final View mBrightnessView; private final H mHandler = new H(); + private final View mPageIndicator; private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class); protected boolean mExpanded; @@ -75,7 +75,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne protected QSSecurityFooter mFooter; private boolean mGridContentVisible = true; - private QSScrollLayout mScrollLayout; protected QSTileLayout mTileLayout; private QSCustomizer mCustomizePanel; @@ -96,13 +95,18 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne mBrightnessView = LayoutInflater.from(mContext).inflate( R.layout.quick_settings_brightness_dialog, this, false); - mTileLayout = new TileLayout(mContext); + addView(mBrightnessView); + + mTileLayout = (QSTileLayout) LayoutInflater.from(mContext).inflate( + R.layout.qs_paged_tile_layout, this, false); mTileLayout.setListening(mListening); - Space space = new Space(mContext); - space.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, - mContext.getResources().getDimensionPixelSize(R.dimen.qs_footer_height))); - mScrollLayout = new QSScrollLayout(mContext, mBrightnessView, (View) mTileLayout, space); - addView(mScrollLayout); + addView((View) mTileLayout); + + mPageIndicator = LayoutInflater.from(context).inflate( + R.layout.qs_page_indicator, this, false); + addView(mPageIndicator); + + ((PagedTileLayout) mTileLayout).setPageIndicator((PageIndicator) mPageIndicator); addDivider(); @@ -127,6 +131,10 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne return mDivider; } + public View getPageIndicator() { + return mPageIndicator; + } + public boolean isShowingCustomize() { return mCustomizePanel != null && mCustomizePanel.isCustomizing(); } @@ -226,13 +234,8 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne public void updateResources() { final Resources res = mContext.getResources(); - mBrightnessView.setPadding( - mBrightnessView.getPaddingLeft(), - res.getDimensionPixelSize(R.dimen.qs_brightness_padding_top), - mBrightnessView.getPaddingRight(), - mBrightnessView.getPaddingBottom()); - setPadding( - 0, 0, 0, res.getDimensionPixelSize(R.dimen.qs_panel_padding_bottom)); + setPadding(0, res.getDimensionPixelSize(R.dimen.qs_brightness_padding_top), + 0, res.getDimensionPixelSize(R.dimen.qs_panel_padding_bottom)); for (TileRecord r : mRecords) { r.tile.clearState(); } @@ -271,11 +274,8 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne public void setExpanded(boolean expanded) { if (mExpanded == expanded) return; mExpanded = expanded; - if (!mExpanded) { - if (mTileLayout instanceof PagedTileLayout) { - ((PagedTileLayout) mTileLayout).setCurrentItem(0, false); - } - mScrollLayout.setScrollY(0); + if (!mExpanded && mTileLayout instanceof PagedTileLayout) { + ((PagedTileLayout) mTileLayout).setCurrentItem(0, false); } mMetricsLogger.visibility(MetricsEvent.QS_PANEL, mExpanded); if (!mExpanded) { @@ -288,14 +288,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne public void setPageListener(final PagedTileLayout.PageListener pageListener) { if (mTileLayout instanceof PagedTileLayout) { ((PagedTileLayout) mTileLayout).setPageListener(pageListener); - } else { - mScrollLayout.setOnScrollChangeListener(new OnScrollChangeListener() { - @Override - public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, - int oldScrollY) { - pageListener.onPageChanged(scrollY == 0); - } - }); } } @@ -571,11 +563,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne mFooter.showDeviceMonitoringDialog(); } - @Override - public boolean onInterceptTouchEvent(MotionEvent event) { - return mExpanded && mScrollLayout.shouldIntercept(event); - } - private class H extends Handler { private static final int SHOW_DETAIL = 1; private static final int SET_TILE_VISIBILITY = 2; diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java index 83148558ea1d1..bdda3b9002759 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java @@ -57,8 +57,7 @@ public class QuickQSPanel extends QSPanel { for (int i = 0; i < mRecords.size(); i++) { mTileLayout.removeTile(mRecords.get(i)); } - View tileLayoutView = (View) mTileLayout; - ((ViewGroup) tileLayoutView.getParent()).removeView(tileLayoutView); + removeView((View) mTileLayout); } mTileLayout = new HeaderTileLayout(context); mTileLayout.setListening(mListening);