Merge "Re-land "Animate overivew actions view hiding on scroll."" into tm-dev

This commit is contained in:
Pat Manning
2022-04-29 18:01:30 +00:00
committed by Android (Google) Code Review
2 changed files with 34 additions and 18 deletions

View File

@@ -56,7 +56,6 @@ public class OverviewActionsView<T extends OverlayUICallbacks> extends FrameLayo
HIDDEN_NON_ZERO_ROTATION,
HIDDEN_NO_TASKS,
HIDDEN_NO_RECENTS,
HIDDEN_FOCUSED_SCROLL,
HIDDEN_SPLIT_SCREEN})
@Retention(RetentionPolicy.SOURCE)
public @interface ActionsHiddenFlags { }
@@ -64,8 +63,7 @@ public class OverviewActionsView<T extends OverlayUICallbacks> extends FrameLayo
public static final int HIDDEN_NON_ZERO_ROTATION = 1 << 0;
public static final int HIDDEN_NO_TASKS = 1 << 1;
public static final int HIDDEN_NO_RECENTS = 1 << 2;
public static final int HIDDEN_FOCUSED_SCROLL = 1 << 3;
public static final int HIDDEN_SPLIT_SCREEN = 1 << 4;
public static final int HIDDEN_SPLIT_SCREEN = 1 << 3;
@IntDef(flag = true, value = {
DISABLED_SCROLLING,

View File

@@ -378,6 +378,8 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
// OverScroll constants
private static final int OVERSCROLL_PAGE_SNAP_ANIMATION_DURATION = 270;
private static final int DEFAULT_ACTIONS_VIEW_ALPHA_ANIMATION_DURATION = 300;
private static final int DISMISS_TASK_DURATION = 300;
private static final int ADDITION_TASK_DURATION = 200;
private static final float INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET = 0.55f;
@@ -652,6 +654,8 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
private TaskView mMovingTaskView;
private OverviewActionsView mActionsView;
private ObjectAnimator mActionsViewAlphaAnimator;
private float mActionsViewAlphaAnimatorFinalValue;
private MultiWindowModeChangedListener mMultiWindowModeChangedListener =
new MultiWindowModeChangedListener() {
@@ -1145,6 +1149,11 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
return getScrollForPage(taskIndex) == getPagedOrientationHandler().getPrimaryScroll(this);
}
private boolean isFocusedTaskInExpectedScrollPosition() {
TaskView focusedTask = getFocusedTaskView();
return focusedTask != null && isTaskInExpectedScrollPosition(indexOfChild(focusedTask));
}
/**
* Returns a {@link TaskView} that has taskId matching {@code taskId} or null if no match.
*/
@@ -1191,13 +1200,15 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
@Override
protected void onPageBeginTransition() {
super.onPageBeginTransition();
mActionsView.updateDisabledFlags(OverviewActionsView.DISABLED_SCROLLING, true);
if (!mActivity.getDeviceProfile().isTablet) {
mActionsView.updateDisabledFlags(OverviewActionsView.DISABLED_SCROLLING, true);
}
}
@Override
protected void onPageEndTransition() {
super.onPageEndTransition();
if (isClearAllHidden()) {
if (isClearAllHidden() && !mActivity.getDeviceProfile().isTablet) {
mActionsView.updateDisabledFlags(OverviewActionsView.DISABLED_SCROLLING, false);
}
if (getNextPage() > 0) {
@@ -1808,16 +1819,24 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
}
private void updateActionsViewFocusedScroll() {
boolean hiddenFocusedScroll;
if (showAsGrid()) {
TaskView focusedTaskView = getFocusedTaskView();
hiddenFocusedScroll = focusedTaskView == null
|| !isTaskInExpectedScrollPosition(indexOfChild(focusedTaskView));
} else {
hiddenFocusedScroll = false;
float actionsViewAlphaValue = isFocusedTaskInExpectedScrollPosition() ? 1 : 0;
// If animation is already in progress towards the same end value, do not restart.
if (mActionsViewAlphaAnimator == null || !mActionsViewAlphaAnimator.isStarted()
|| (mActionsViewAlphaAnimator.isStarted()
&& mActionsViewAlphaAnimatorFinalValue != actionsViewAlphaValue)) {
animateActionsViewAlpha(actionsViewAlphaValue,
DEFAULT_ACTIONS_VIEW_ALPHA_ANIMATION_DURATION);
}
}
mActionsView.updateHiddenFlags(OverviewActionsView.HIDDEN_FOCUSED_SCROLL,
hiddenFocusedScroll);
}
private void animateActionsViewAlpha(float alphaValue, long duration) {
mActionsViewAlphaAnimator = ObjectAnimator.ofFloat(
mActionsView.getVisibilityAlpha(), MultiValueAlpha.VALUE, alphaValue);
mActionsViewAlphaAnimatorFinalValue = alphaValue;
mActionsViewAlphaAnimator.setDuration(duration);
mActionsViewAlphaAnimator.start();
}
/**
@@ -2346,10 +2365,9 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
}
private void animateActionsViewIn() {
ObjectAnimator anim = ObjectAnimator.ofFloat(
mActionsView.getVisibilityAlpha(), MultiValueAlpha.VALUE, 0, 1);
anim.setDuration(TaskView.SCALE_ICON_DURATION);
anim.start();
if (!showAsGrid() || isFocusedTaskInExpectedScrollPosition()) {
animateActionsViewAlpha(1, TaskView.SCALE_ICON_DURATION);
}
}
public void animateUpTaskIconScale() {
@@ -3292,7 +3310,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
// Update various scroll-dependent UI.
dispatchScrollChanged();
updateActionsViewFocusedScroll();
if (isClearAllHidden()) {
if (isClearAllHidden() && !mActivity.getDeviceProfile().isTablet) {
mActionsView.updateDisabledFlags(OverviewActionsView.DISABLED_SCROLLING,
false);
}