Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0c3bbfd authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Place split selection placeholder view based on option selected" into sc-dev

parents b837f504 0e162720
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);
    }
+27 −0
Original line number Diff line number Diff line
@@ -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;
+7 −1
Original line number Diff line number Diff line
@@ -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() {
+15 −2
Original line number Diff line number Diff line
@@ -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);
    }
}
+18 −8
Original line number Diff line number Diff line
@@ -311,12 +311,21 @@ 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_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 {
            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,
@@ -327,6 +336,7 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler {
                        R.drawable.ic_split_screen, R.string.split_screen_position_top,
                        STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
            }
        }
        return options;
    }