Merge "Fix two bugs with rotation in split select state" into tm-qpr-dev
This commit is contained in:
@@ -27,6 +27,7 @@ import static com.android.quickstep.views.RecentsView.TASK_PRIMARY_SPLIT_TRANSLA
|
||||
import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_SPLIT_TRANSLATION;
|
||||
import static com.android.quickstep.views.TaskView.FLAG_UPDATE_ALL;
|
||||
|
||||
import android.animation.AnimatorSet;
|
||||
import android.annotation.TargetApi;
|
||||
import android.os.Build;
|
||||
import android.util.FloatProperty;
|
||||
@@ -108,6 +109,13 @@ public final class RecentsViewStateController extends
|
||||
*/
|
||||
private void handleSplitSelectionState(@NonNull LauncherState toState,
|
||||
@NonNull PendingAnimation builder, boolean animate) {
|
||||
if (toState != OVERVIEW_SPLIT_SELECT) {
|
||||
// Not going to split, nothing to do but ensure taskviews are at correct offset
|
||||
mRecentsView.resetSplitPrimaryScrollOffset();
|
||||
return;
|
||||
}
|
||||
|
||||
// Create transition animations to split select
|
||||
PagedOrientationHandler orientationHandler =
|
||||
((RecentsView) mLauncher.getOverviewPanel()).getPagedOrientationHandler();
|
||||
Pair<FloatProperty, FloatProperty> taskViewsFloat =
|
||||
@@ -115,22 +123,20 @@ public final class RecentsViewStateController extends
|
||||
TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION,
|
||||
mLauncher.getDeviceProfile());
|
||||
|
||||
if (toState == OVERVIEW_SPLIT_SELECT) {
|
||||
mRecentsView.createSplitSelectInitAnimation(builder,
|
||||
toState.getTransitionDuration(mLauncher, true /* isToState */));
|
||||
// Add properties to shift remaining taskViews to get out of placeholder view
|
||||
builder.setFloat(mRecentsView, taskViewsFloat.first,
|
||||
toState.getSplitSelectTranslation(mLauncher), LINEAR);
|
||||
builder.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR);
|
||||
mRecentsView.createSplitSelectInitAnimation(builder,
|
||||
toState.getTransitionDuration(mLauncher, true /* isToState */));
|
||||
// Add properties to shift remaining taskViews to get out of placeholder view
|
||||
builder.setFloat(mRecentsView, taskViewsFloat.first,
|
||||
toState.getSplitSelectTranslation(mLauncher), LINEAR);
|
||||
builder.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR);
|
||||
|
||||
if (!animate) {
|
||||
builder.buildAnim().start();
|
||||
}
|
||||
|
||||
mRecentsView.applySplitPrimaryScrollOffset();
|
||||
} else {
|
||||
mRecentsView.resetSplitPrimaryScrollOffset();
|
||||
if (!animate) {
|
||||
AnimatorSet as = builder.buildAnim();
|
||||
as.start();
|
||||
as.end();
|
||||
}
|
||||
|
||||
mRecentsView.applySplitPrimaryScrollOffset();
|
||||
}
|
||||
|
||||
private void setAlphas(PropertySetter propertySetter, StateAnimationConfig config,
|
||||
|
||||
@@ -2859,6 +2859,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
mSplitSelectStateController.getActiveSplitStagePosition(), mTempRect);
|
||||
|
||||
RectF startingTaskRect = new RectF();
|
||||
safeRemoveDragLayerView(mFirstFloatingTaskView);
|
||||
if (mSplitHiddenTaskView != null) {
|
||||
// Split staging is initiated
|
||||
mSplitHiddenTaskView.setThumbnailVisibility(INVISIBLE);
|
||||
@@ -2882,6 +2883,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
}
|
||||
|
||||
// SplitInstructionsView: animate in
|
||||
safeRemoveDragLayerView(mSplitInstructionsView);
|
||||
mSplitInstructionsView = SplitInstructionsView.getSplitInstructionsView(mActivity);
|
||||
mSplitInstructionsView.setAlpha(0);
|
||||
anim.setViewAlpha(mSplitInstructionsView, 1, clampToProgress(LINEAR,
|
||||
@@ -4237,6 +4239,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
new RectF(firstTaskStartingBounds), firstTaskEndingBounds,
|
||||
false /* fadeWithThumbnail */, true /* isStagedTask */);
|
||||
|
||||
safeRemoveDragLayerView(mSecondFloatingTaskView);
|
||||
mSecondFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
|
||||
thumbnailView, thumbnailView.getThumbnail(),
|
||||
iconView.getDrawable(), secondTaskStartingBounds);
|
||||
@@ -4269,17 +4272,13 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
@SuppressLint("WrongCall")
|
||||
protected void resetFromSplitSelectionState() {
|
||||
if (mSplitSelectSource != null || mSplitHiddenTaskViewIndex != -1) {
|
||||
if (mSplitInstructionsView != null) {
|
||||
mActivity.getDragLayer().removeView(mSplitInstructionsView);
|
||||
mSplitInstructionsView = null;
|
||||
}
|
||||
if (mFirstFloatingTaskView != null) {
|
||||
mActivity.getDragLayer().removeView(mFirstFloatingTaskView);
|
||||
mFirstFloatingTaskView = null;
|
||||
}
|
||||
if (mSecondFloatingTaskView != null) {
|
||||
mActivity.getDragLayer().removeView(mSecondFloatingTaskView);
|
||||
mSecondFloatingTaskView = null;
|
||||
safeRemoveDragLayerView(mFirstFloatingTaskView);
|
||||
safeRemoveDragLayerView(mSecondFloatingTaskView);
|
||||
safeRemoveDragLayerView(mSplitInstructionsView);
|
||||
mFirstFloatingTaskView = null;
|
||||
mSecondFloatingTaskView = null;
|
||||
mSplitInstructionsView = null;
|
||||
if (mSecondSplitHiddenView != null) {
|
||||
mSecondSplitHiddenView.setVisibility(VISIBLE);
|
||||
mSecondSplitHiddenView = null;
|
||||
}
|
||||
@@ -4307,6 +4306,12 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
}
|
||||
}
|
||||
|
||||
private void safeRemoveDragLayerView(@Nullable View viewToRemove) {
|
||||
if (viewToRemove != null) {
|
||||
mActivity.getDragLayer().removeView(viewToRemove);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns how much additional translation there should be for each of the child TaskViews.
|
||||
* Note that the translation can be its primary or secondary dimension.
|
||||
|
||||
Reference in New Issue
Block a user