diff options
author | Vadim Tryshev <vadimt@google.com> | 2018-05-10 15:42:42 -0700 |
---|---|---|
committer | Vadim Tryshev <vadimt@google.com> | 2018-05-15 11:28:24 -0700 |
commit | 3154cd16b02cdf2512b8160c4191a48ee3fd2c3b (patch) | |
tree | 8e6f182fc6aefc61107785c5840f90825aa682d7 /quickstep | |
parent | c14adabe99aa120dc2e9cef64b4553f757f3086f (diff) | |
download | android_packages_apps_Trebuchet-3154cd16b02cdf2512b8160c4191a48ee3fd2c3b.tar.gz android_packages_apps_Trebuchet-3154cd16b02cdf2512b8160c4191a48ee3fd2c3b.tar.bz2 android_packages_apps_Trebuchet-3154cd16b02cdf2512b8160c4191a48ee3fd2c3b.zip |
Keep clear-all button revealed after dismiss
If it was visible before the dismiss, it will be visible after that.
As a nice side effect, it will preserve visibility on any layout, say,
after a rotation.
Bug: 79117932
Test: Manual
Change-Id: Ia8a544af1326458d4e2d7a07ae2b668f604bc0b3
Diffstat (limited to 'quickstep')
-rw-r--r-- | quickstep/src/com/android/quickstep/views/RecentsView.java | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index ad85d9ed4..05793f14f 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -121,6 +121,8 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl // Keeps track of the previously known visible tasks for purposes of loading/unloading task data private final SparseBooleanArray mHasVisibleTaskData = new SparseBooleanArray(); + private boolean mIsClearAllButtonFullyRevealed; + /** * TODO: Call reloadIdNeeded in onTaskStackChanged. */ @@ -337,11 +339,15 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl } } + private int getScrollEnd() { + return mIsRtl ? 0 : mMaxScrollX; + } + private float calculateClearAllButtonAlpha() { final int childCount = getChildCount(); if (mShowEmptyMessage || childCount == 0) return 0; - final int scrollEnd = mIsRtl ? 0 : mMaxScrollX; + final int scrollEnd = getScrollEnd(); final int oldestChildScroll = getScrollForPage(childCount - 1); return Utilities.boundToRange( @@ -352,6 +358,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl private void updateClearAllButtonAlpha() { if (mClearAllButton != null) { final float alpha = calculateClearAllButtonAlpha(); + mIsClearAllButtonFullyRevealed = alpha == 1; mClearAllButton.setAlpha(alpha * mContentAlpha); } } @@ -363,9 +370,18 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl } @Override + protected void restoreScrollOnLayout() { + if (mIsClearAllButtonFullyRevealed) { + scrollAndForceFinish(getScrollEnd()); + } else { + super.restoreScrollOnLayout(); + } + } + + @Override public boolean onTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN && mTouchState == TOUCH_STATE_REST - && mScroller.isFinished() && mClearAllButton.getAlpha() > 0) { + && mScroller.isFinished() && mIsClearAllButtonFullyRevealed) { mClearAllButton.getHitRect(mTempRect); mTempRect.offset(-getLeft(), -getTop()); if (mTempRect.contains((int) ev.getX(), (int) ev.getY())) { @@ -829,7 +845,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl removeView(taskView); if (getChildCount() == 0) { onAllTasksRemoved(); - } else { + } else if (!mIsClearAllButtonFullyRevealed) { snapToPageImmediately(pageToSnapTo); } } |