Distinguish mDragHandleProgress from mMidProgress

mMidProgress is intended to be the point at which we reach Overview when
swiping up and thus start scrimming it as All Apps shows above it. For
that reason, mMidProgress needs to match OverviewState's progress. In
contrast, the drag handle (accessibility arrow) can move up sooner to
avoid overlapping with the QSB; for this, we added mDragHandleProgress.

Bug: 136800511
Change-Id: I2825ff798707530420855257350e492b4b9b77dc
This commit is contained in:
Tony Wickham
2019-07-23 16:58:45 -07:00
parent b6841ac630
commit fbd77c48cc

View File

@@ -74,6 +74,9 @@ public class ShelfScrimView extends ScrimView implements NavigationModeChangeLis
private int mMidAlpha;
private float mMidProgress;
// The progress at which the drag handle starts moving up with the shelf.
private float mDragHandleProgress;
private Interpolator mBeforeMidProgressColorInterpolator = ACCEL;
private Interpolator mAfterMidProgressColorInterpolator = ACCEL;
@@ -150,15 +153,16 @@ public class ShelfScrimView extends ScrimView implements NavigationModeChangeLis
if ((OVERVIEW.getVisibleElements(mLauncher) & ALL_APPS_HEADER_EXTRA) == 0) {
mMidProgress = 1;
mDragHandleProgress = 1;
mMidAlpha = 0;
} else {
mMidAlpha = Themes.getAttrInteger(getContext(), R.attr.allAppsInterimScrimAlpha);
mMidProgress = OVERVIEW.getVerticalProgress(mLauncher);
Rect hotseatPadding = dp.getHotseatLayoutPadding();
int hotseatSize = dp.hotseatBarSizePx + dp.getInsets().bottom
- hotseatPadding.bottom - hotseatPadding.top;
float arrowTop = Math.min(hotseatSize, OverviewState.getDefaultSwipeHeight(dp));
mMidProgress = 1 - (arrowTop / mShiftRange);
float dragHandleTop = Math.min(hotseatSize, OverviewState.getDefaultSwipeHeight(dp));
mDragHandleProgress = 1 - (dragHandleTop / mShiftRange);
}
mTopOffset = dp.getInsets().top - mShelfOffset;
mShelfTopAtThreshold = mShiftRange * SCRIM_CATCHUP_THRESHOLD + mTopOffset;
@@ -199,8 +203,6 @@ public class ShelfScrimView extends ScrimView implements NavigationModeChangeLis
mProgress, mMidProgress, 1, mMidAlpha, 0, mBeforeMidProgressColorInterpolator));
mShelfColor = setColorAlphaBound(mEndScrim, alpha);
} else {
mDragHandleOffset += mShiftRange * (mMidProgress - mProgress);
// Note that these ranges and interpolators are inverted because progress goes 1 to 0.
int alpha = Math.round(
Utilities.mapToRange(mProgress, (float) 0, mMidProgress, (float) mEndAlpha,
@@ -212,6 +214,10 @@ public class ShelfScrimView extends ScrimView implements NavigationModeChangeLis
(float) 0, LINEAR));
mRemainingScreenColor = setColorAlphaBound(mScrimColor, remainingScrimAlpha);
}
if (mProgress < mDragHandleProgress) {
mDragHandleOffset += mShiftRange * (mDragHandleProgress - mProgress);
}
}
@Override