Merge "Changes page alignment in PagedView calcualtion" into sc-dev

This commit is contained in:
Alex Chau 2021-03-31 10:36:12 +00:00 committed by Android (Google) Code Review
commit 21dfadab76
4 changed files with 18 additions and 40 deletions

View File

@ -52,7 +52,7 @@ public class ClearAllButton extends Button implements PageCallbacks {
private float mGridTranslationPrimary;
private float mGridTranslationSecondary;
private float mGridScrollOffset;
private float mOffsetTranslationPrimary;
private float mScrollOffsetPrimary;
private int mSidePadding;
@ -144,9 +144,8 @@ public class ClearAllButton extends Button implements PageCallbacks {
mGridScrollOffset = gridScrollOffset;
}
public void setOffsetTranslationPrimary(float offsetTranslationPrimary) {
mOffsetTranslationPrimary = offsetTranslationPrimary;
applyPrimaryTranslation();
public void setScrollOffsetPrimary(float scrollOffsetPrimary) {
mScrollOffsetPrimary = scrollOffsetPrimary;
}
public float getScrollAdjustment(boolean gridEnabled) {
@ -154,7 +153,7 @@ public class ClearAllButton extends Button implements PageCallbacks {
if (gridEnabled) {
scrollAdjustment += mGridTranslationPrimary + mGridScrollOffset;
}
scrollAdjustment += mOffsetTranslationPrimary;
scrollAdjustment += mScrollOffsetPrimary;
return scrollAdjustment;
}
@ -181,8 +180,7 @@ public class ClearAllButton extends Button implements PageCallbacks {
PagedOrientationHandler orientationHandler = recentsView.getPagedOrientationHandler();
orientationHandler.getPrimaryViewTranslate().set(this,
orientationHandler.getPrimaryValue(0f, getOriginalTranslationY())
+ mNormalTranslationPrimary + mOffsetTranslationPrimary + getGridTrans(
mGridTranslationPrimary));
+ mNormalTranslationPrimary + getGridTrans(mGridTranslationPrimary));
}
private void applySecondaryTranslation() {

View File

@ -1192,7 +1192,6 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
// Compensate page spacing widening caused by RecentsView scaling.
widthDiff += mPageSpacing * (1 - 1 / mFullscreenScale);
float fullscreenTranslationX = mIsRtl ? widthDiff : -widthDiff;
fullscreenTranslations[i] += fullscreenTranslationX;
accumulatedTranslationX += fullscreenTranslationX;
}
@ -1203,6 +1202,11 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
fullscreenTranslations[i] - fullscreenTranslations[firstNonHomeTaskIndex]);
}
// Align ClearAllButton to the left (RTL) or right (non-RTL), which is different from other
// TaskViews.
int clearAllWidthDiff = mTaskWidth - mClearAllButton.getWidth();
mClearAllButton.setScrollOffsetPrimary(mIsRtl ? clearAllWidthDiff : -clearAllWidthDiff);
updateGridProperties(false);
}
@ -1746,20 +1750,12 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
}
}
// If the first non-home task does not take full width of task Rect, shift all tasks
// accordingly without affecting scrolls.
int firstTaskWidth = getTaskViewAt(firstNonHomeTaskIndex).getLayoutParams().width;
float firstNonHomeTaskOffset = firstTaskWidth == ViewGroup.LayoutParams.MATCH_PARENT ? 0
: mTaskWidth - firstTaskWidth;
float offsetTranslation = mIsRtl ? firstNonHomeTaskOffset : -firstNonHomeTaskOffset;
// We need to maintain first non-home task's grid translation at 0, now shift translation
// of all the TaskViews to achieve that.
for (int i = firstNonHomeTaskIndex; i < taskCount; i++) {
TaskView taskView = getTaskViewAt(i);
taskView.setGridTranslationX(
gridTranslations[i] - gridTranslations[firstNonHomeTaskIndex]);
taskView.setGridOffsetTranslationX(offsetTranslation);
}
// Use the accumulated translation of the longer row.
@ -1803,7 +1799,6 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
mClearAllButton.setGridScrollOffset(
mIsRtl ? mLastComputedTaskSize.left - mLastComputedGridSize.left
: mLastComputedTaskSize.right - mLastComputedGridSize.right);
mClearAllButton.setOffsetTranslationPrimary(offsetTranslation);
setGridProgress(mGridProgress);
}

View File

@ -295,8 +295,6 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
// The following grid translations scales with mGridProgress.
private float mGridTranslationX;
private float mGridTranslationY;
// Offset translation does not affect scroll calculation.
private float mGridOffsetTranslationX;
private ObjectAnimator mIconAndDimAnimator;
private float mIconScaleAnimStartProgress = 0;
@ -792,8 +790,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
@Override
public void onRecycle() {
mFullscreenTranslationX = mGridTranslationX =
mGridTranslationY = mGridOffsetTranslationX = mBoxTranslationY = 0f;
mFullscreenTranslationX = mGridTranslationX = mGridTranslationY = mBoxTranslationY = 0f;
resetViewTransforms();
// Clear any references to the thumbnail (it will be re-read either from the cache or the
// system on next bind)
@ -874,7 +871,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (mActivity.getDeviceProfile().isTablet && FeatureFlags.ENABLE_OVERVIEW_GRID.get()) {
setPivotX(getLayoutDirection() == LAYOUT_DIRECTION_RTL ? (right - left) : 0);
setPivotX(getLayoutDirection() == LAYOUT_DIRECTION_RTL ? 0 : right - left);
setPivotY(mSnapshotView.getTop());
} else {
setPivotX((right - left) * 0.5f);
@ -979,11 +976,6 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
return mGridTranslationY;
}
public void setGridOffsetTranslationX(float gridOffsetTranslationX) {
mGridOffsetTranslationX = gridOffsetTranslationX;
applyTranslationX();
}
public float getScrollAdjustment(boolean fullscreenEnabled, boolean gridEnabled) {
float scrollAdjustment = 0;
if (fullscreenEnabled) {
@ -996,11 +988,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
}
public float getOffsetAdjustment(boolean fullscreenEnabled,boolean gridEnabled) {
float offsetAdjustment = getScrollAdjustment(fullscreenEnabled, gridEnabled);
if (gridEnabled) {
offsetAdjustment += mGridOffsetTranslationX;
}
return offsetAdjustment;
return getScrollAdjustment(fullscreenEnabled, gridEnabled);
}
public float getSizeAdjustment(boolean fullscreenEnabled) {
@ -1019,7 +1007,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
private void applyTranslationX() {
setTranslationX(mDismissTranslationX + mTaskOffsetTranslationX + mTaskResistanceTranslationX
+ getFullscreenTrans(mFullscreenTranslationX)
+ getGridTrans(mGridTranslationX + mGridOffsetTranslationX));
+ getGridTrans(mGridTranslationX));
}
private void applyTranslationY() {

View File

@ -715,13 +715,10 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
final int primaryDimension = bounds.primaryDimension;
final int childPrimaryEnd = bounds.childPrimaryEnd;
// In case the pages are of different width, align the page to left or right edge
// based on the orientation.
// In case we have multiple panels on the screen, scrollOffsetEnd is the scroll
// needed for the whole visible area, so we have to divide it by panelCount.
final int pageScroll = mIsRtl
? (childStart - scrollOffsetStart)
: Math.max(0, childPrimaryEnd - scrollOffsetEnd / getPanelCount());
// In case the pages are of different width, align the page to left edge for non-RTL
// or right edge for RTL.
final int pageScroll =
mIsRtl ? childPrimaryEnd - scrollOffsetEnd : childStart - scrollOffsetStart;
if (outPageScrolls[i] != pageScroll) {
pageScrollChanged = true;
outPageScrolls[i] = pageScroll;