mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-04 09:56:49 +00:00
Merge "Re-land "Animate overivew actions view hiding on scroll."" into tm-dev
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user