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
This commit is contained in:
parent
c14adabe99
commit
3154cd16b0
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -362,10 +369,19 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
|||
updateClearAllButtonAlpha();
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -238,6 +238,12 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
|||
return index;
|
||||
}
|
||||
|
||||
protected void scrollAndForceFinish(int scrollX) {
|
||||
scrollTo(scrollX, 0);
|
||||
mScroller.setFinalX(scrollX);
|
||||
forceFinishScroller(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the scroll of the current page immediately to its final scroll position. We use this
|
||||
* in CustomizePagedView to allow tabs to share the same PagedView while resetting the scroll of
|
||||
|
@ -249,9 +255,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
|||
if (0 <= mCurrentPage && mCurrentPage < getPageCount()) {
|
||||
newX = getScrollForPage(mCurrentPage);
|
||||
}
|
||||
scrollTo(newX, 0);
|
||||
mScroller.setFinalX(newX);
|
||||
forceFinishScroller(true);
|
||||
scrollAndForceFinish(newX);
|
||||
}
|
||||
|
||||
private void abortScrollerAnimation(boolean resetNextPage) {
|
||||
|
@ -538,6 +542,10 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
|||
setMeasuredDimension(widthSize, heightSize);
|
||||
}
|
||||
|
||||
protected void restoreScrollOnLayout() {
|
||||
setCurrentPage(getNextPage());
|
||||
}
|
||||
|
||||
@SuppressLint("DrawAllocation")
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||
|
@ -589,7 +597,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
|||
}
|
||||
|
||||
if (mScroller.isFinished() && pageScrollChanged) {
|
||||
setCurrentPage(getNextPage());
|
||||
restoreScrollOnLayout();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue