Merge "Place split selection placeholder view based on option selected" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a0c3bbfd2c
@@ -113,7 +113,7 @@ public final class RecentsViewStateController extends
|
||||
ANIM_OVERVIEW_ACTIONS_FADE, LINEAR));
|
||||
|
||||
float splitPlaceholderAlpha = state.areElementsVisible(mLauncher, SPLIT_PLACHOLDER_VIEW) ?
|
||||
0.7f : 0;
|
||||
0.85f : 0;
|
||||
propertySetter.setFloat(mRecentsView.getSplitPlaceholder(), ALPHA_FLOAT,
|
||||
splitPlaceholderAlpha, LINEAR);
|
||||
}
|
||||
|
||||
@@ -16,16 +16,20 @@
|
||||
|
||||
package com.android.quickstep.util;
|
||||
|
||||
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
|
||||
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
|
||||
import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
|
||||
import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
|
||||
|
||||
import android.animation.AnimatorSet;
|
||||
import android.app.ActivityOptions;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
import android.util.Pair;
|
||||
import android.view.Gravity;
|
||||
import android.view.SurfaceControl;
|
||||
import android.window.TransitionInfo;
|
||||
|
||||
@@ -33,7 +37,10 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.BaseActivity;
|
||||
import com.android.launcher3.BaseQuickstepLauncher;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.InsettableFrameLayout;
|
||||
import com.android.launcher3.LauncherAnimationRunner;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.WrappedAnimationRunnerImpl;
|
||||
import com.android.launcher3.WrappedLauncherAnimationRunner;
|
||||
import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
|
||||
@@ -115,6 +122,26 @@ public class SplitSelectStateController {
|
||||
resetState();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@link InsettableFrameLayout.LayoutParams} to correctly position the
|
||||
* split placeholder view
|
||||
*/
|
||||
public InsettableFrameLayout.LayoutParams getLayoutParamsForActivePosition(Resources resources,
|
||||
DeviceProfile deviceProfile) {
|
||||
InsettableFrameLayout.LayoutParams params =
|
||||
new InsettableFrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT);
|
||||
boolean topLeftPosition = mInitialPosition.mStagePosition == STAGE_POSITION_TOP_OR_LEFT;
|
||||
if (deviceProfile.isLandscape) {
|
||||
params.width = (int) resources.getDimension(R.dimen.split_placeholder_size);
|
||||
params.gravity = topLeftPosition ? Gravity.START : Gravity.END;
|
||||
} else {
|
||||
params.height = (int) resources.getDimension(R.dimen.split_placeholder_size);
|
||||
params.gravity = Gravity.TOP;
|
||||
}
|
||||
|
||||
return params;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public SplitPositionOption getActiveSplitPositionOption() {
|
||||
return mInitialPosition;
|
||||
|
||||
@@ -145,6 +145,7 @@ import com.android.quickstep.util.LayoutUtils;
|
||||
import com.android.quickstep.util.MultiValueUpdateListener;
|
||||
import com.android.quickstep.util.RecentsOrientedState;
|
||||
import com.android.quickstep.util.SplitScreenBounds;
|
||||
import com.android.quickstep.util.SplitSelectStateController;
|
||||
import com.android.quickstep.util.SurfaceTransactionApplier;
|
||||
import com.android.quickstep.util.TaskViewSimulator;
|
||||
import com.android.quickstep.util.TransformParams;
|
||||
@@ -2753,9 +2754,14 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
|
||||
public void initiateSplitSelect(TaskView taskView, SplitPositionOption splitPositionOption) {
|
||||
mSplitHiddenTaskView = taskView;
|
||||
mSplitPlaceholderView.getSplitController().setInitialTaskSelect(taskView,
|
||||
SplitSelectStateController splitController = mSplitPlaceholderView.getSplitController();
|
||||
splitController.setInitialTaskSelect(taskView,
|
||||
splitPositionOption);
|
||||
mSplitHiddenTaskViewIndex = indexOfChild(taskView);
|
||||
mSplitPlaceholderView.setLayoutParams(
|
||||
splitController.getLayoutParamsForActivePosition(getResources(),
|
||||
mActivity.getDeviceProfile()));
|
||||
mSplitPlaceholderView.setIcon(taskView.getIconView());
|
||||
}
|
||||
|
||||
public PendingAnimation createSplitSelectInitAnimation() {
|
||||
|
||||
@@ -19,11 +19,12 @@ package com.android.quickstep.views;
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.FloatProperty;
|
||||
import android.view.View;
|
||||
import android.view.Gravity;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import com.android.quickstep.util.SplitSelectStateController;
|
||||
|
||||
public class SplitPlaceholderView extends View {
|
||||
public class SplitPlaceholderView extends FrameLayout {
|
||||
|
||||
public static final FloatProperty<SplitPlaceholderView> ALPHA_FLOAT =
|
||||
new FloatProperty<SplitPlaceholderView>("SplitViewAlpha") {
|
||||
@@ -40,6 +41,7 @@ public class SplitPlaceholderView extends View {
|
||||
};
|
||||
|
||||
private SplitSelectStateController mSplitController;
|
||||
private IconView mIcon;
|
||||
|
||||
public SplitPlaceholderView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
@@ -52,4 +54,15 @@ public class SplitPlaceholderView extends View {
|
||||
public SplitSelectStateController getSplitController() {
|
||||
return mSplitController;
|
||||
}
|
||||
|
||||
public void setIcon(IconView icon) {
|
||||
if (mIcon == null) {
|
||||
mIcon = new IconView(getContext());
|
||||
addView(mIcon);
|
||||
}
|
||||
mIcon.setDrawable(icon.getDrawable());
|
||||
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(icon.getLayoutParams());
|
||||
params.gravity = Gravity.CENTER;
|
||||
mIcon.setLayoutParams(params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -311,21 +311,31 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler {
|
||||
@Override
|
||||
public List<SplitPositionOption> getSplitPositionOptions(DeviceProfile dp) {
|
||||
List<SplitPositionOption> options = new ArrayList<>(1);
|
||||
// Add both left and right options if we're in tablet mode
|
||||
// TODO: Add in correct icons
|
||||
if (dp.isSeascape()) { // or seascape
|
||||
// Add left/right options
|
||||
if (dp.isTablet && dp.isLandscape) {
|
||||
options.add(new SplitPositionOption(
|
||||
R.drawable.ic_split_screen, R.string.split_screen_position_right,
|
||||
STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
|
||||
} else if (dp.isLandscape) {
|
||||
STAGE_POSITION_BOTTOM_OR_RIGHT, STAGE_TYPE_MAIN));
|
||||
options.add(new SplitPositionOption(
|
||||
R.drawable.ic_split_screen, R.string.split_screen_position_left,
|
||||
STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
|
||||
} else {
|
||||
// Only add top option
|
||||
options.add(new SplitPositionOption(
|
||||
R.drawable.ic_split_screen, R.string.split_screen_position_top,
|
||||
STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
|
||||
if (dp.isSeascape()) {
|
||||
// Add left/right options
|
||||
options.add(new SplitPositionOption(
|
||||
R.drawable.ic_split_screen, R.string.split_screen_position_right,
|
||||
STAGE_POSITION_BOTTOM_OR_RIGHT, STAGE_TYPE_MAIN));
|
||||
} else if (dp.isLandscape) {
|
||||
options.add(new SplitPositionOption(
|
||||
R.drawable.ic_split_screen, R.string.split_screen_position_left,
|
||||
STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
|
||||
} else {
|
||||
// Only add top option
|
||||
options.add(new SplitPositionOption(
|
||||
R.drawable.ic_split_screen, R.string.split_screen_position_top,
|
||||
STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
|
||||
}
|
||||
}
|
||||
return options;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user