Making clear-all pressable correctly

Bug: 72222505
Test: Manual
Change-Id: I1ca35482a2090c329be6c906f5047612e6948ad2
This commit is contained in:
Vadim Tryshev
2018-04-17 18:32:43 -07:00
parent 69632a46ab
commit d9e53c13b1
2 changed files with 21 additions and 17 deletions
@@ -169,7 +169,7 @@ public abstract class RecentsView<T extends BaseActivity>
// Keeps track of task views whose visual state should not be reset
private ArraySet<TaskView> mIgnoreResetTaskViews = new ArraySet<>();
private RecentsViewContainer mContainerView;
private View mClearAllButton;
// Variables for empty state
private final Drawable mEmptyIcon;
@@ -311,12 +311,15 @@ public abstract class RecentsView<T extends BaseActivity>
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (DEBUG_SHOW_CLEAR_ALL_BUTTON && mTouchState == TOUCH_STATE_REST && mScroller.isFinished()
&& getChildCount() != 0
&& ev.getX() > getChildAt(getChildCount() - 1).getRight() - getScrollX()) {
// If nothing is in motion, allow events to the right of the last task to go to the
// Clear All button.
return false;
if (DEBUG_SHOW_CLEAR_ALL_BUTTON && ev.getAction() == MotionEvent.ACTION_DOWN
&& mTouchState == TOUCH_STATE_REST && mScroller.isFinished()
&& mClearAllButton.getVisibility() == View.VISIBLE) {
mClearAllButton.getHitRect(mTempRect);
mTempRect.offset(-getLeft(), -getTop());
if (mTempRect.contains((int) ev.getX(), (int) ev.getY())) {
// If nothing is in motion, let the Clear All button process the event.
return false;
}
}
if (ev.getAction() == MotionEvent.ACTION_UP && mShowEmptyMessage) {
@@ -928,8 +931,8 @@ public abstract class RecentsView<T extends BaseActivity>
mShowEmptyMessage = isEmpty;
updateEmptyStateUi(hasSizeChanged);
invalidate();
if (mContainerView != null) {
mContainerView.onEmptyStateChanged(!DEBUG_SHOW_CLEAR_ALL_BUTTON || mShowEmptyMessage);
if (mClearAllButton != null) {
updateClearAllButtonVisibility();
}
}
@@ -1119,8 +1122,13 @@ public abstract class RecentsView<T extends BaseActivity>
R.dimen.clear_all_container_width) - getPaddingEnd();
}
public void setContainerView(RecentsViewContainer containerView) {
mContainerView = containerView;
mContainerView.onEmptyStateChanged(!DEBUG_SHOW_CLEAR_ALL_BUTTON || mShowEmptyMessage);
private void updateClearAllButtonVisibility() {
mClearAllButton.setVisibility(
!DEBUG_SHOW_CLEAR_ALL_BUTTON || mShowEmptyMessage ? GONE : VISIBLE);
}
public void setClearAllButton(View clearAllButton) {
mClearAllButton = clearAllButton;
updateClearAllButtonVisibility();
}
}
@@ -43,7 +43,7 @@ public class RecentsViewContainer extends InsettableFrameLayout {
});
mRecentsView = (RecentsView) findViewById(R.id.overview_panel);
mRecentsView.setContainerView(this);
mRecentsView.setClearAllButton(mClearAllButton);
}
@Override
@@ -74,8 +74,4 @@ public class RecentsViewContainer extends InsettableFrameLayout {
mRecentsView.setContentAlpha(alpha);
setVisibility(alpha > 0 ? VISIBLE : GONE);
}
public void onEmptyStateChanged(boolean isEmpty) {
mClearAllButton.setVisibility(isEmpty ? GONE : VISIBLE);
}
}