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

Commit 18b84e70 authored by Nicolò Mazzucato's avatar Nicolò Mazzucato Committed by Automerger Merge Worker
Browse files

Merge "Change unfold background color based on split screen state" into...

Merge "Change unfold background color based on split screen state" into udc-dev am: 550f35fc am: 97f4fa09 am: 13367101 am: 307114d3

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23083218



Change-Id: I513ad42e2f299b40859ce8705d5cd7da027f2492
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 0abcbc2a 307114d3
Loading
Loading
Loading
Loading
+35 −5
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.graphics.Color.blue;
import static android.graphics.Color.green;
import static android.graphics.Color.red;

import android.annotation.ColorRes;
import android.annotation.NonNull;
import android.content.Context;
import android.view.SurfaceControl;
@@ -33,10 +34,14 @@ public class UnfoldBackgroundController {

    private static final int BACKGROUND_LAYER_Z_INDEX = -1;
    private final float[] mBackgroundColor;
    private final float[] mSplitScreenBackgroundColor;
    private float[] mBackgroundColorSet;
    private SurfaceControl mBackgroundLayer;
    private boolean mSplitScreenVisible = false;

    public UnfoldBackgroundController(@NonNull Context context) {
        mBackgroundColor = getBackgroundColor(context);
        mBackgroundColor = getRGBColorFromId(context, R.color.unfold_background);
        mSplitScreenBackgroundColor = getRGBColorFromId(context, R.color.split_divider_background);
    }

    /**
@@ -44,7 +49,14 @@ public class UnfoldBackgroundController {
     * @param transaction where we should add the background if it is not added
     */
    public void ensureBackground(@NonNull SurfaceControl.Transaction transaction) {
        if (mBackgroundLayer != null) return;
        float[] expectedColor = getCurrentBackgroundColor();
        if (mBackgroundLayer != null) {
            if (mBackgroundColorSet != expectedColor) {
                transaction.setColor(mBackgroundLayer, expectedColor);
                mBackgroundColorSet = expectedColor;
            }
            return;
        }

        SurfaceControl.Builder colorLayerBuilder = new SurfaceControl.Builder()
                .setName("app-unfold-background")
@@ -53,9 +65,10 @@ public class UnfoldBackgroundController {
        mBackgroundLayer = colorLayerBuilder.build();

        transaction
                .setColor(mBackgroundLayer, mBackgroundColor)
                .setColor(mBackgroundLayer, expectedColor)
                .show(mBackgroundLayer)
                .setLayer(mBackgroundLayer, BACKGROUND_LAYER_Z_INDEX);
        mBackgroundColorSet = expectedColor;
    }

    /**
@@ -70,8 +83,25 @@ public class UnfoldBackgroundController {
        mBackgroundLayer = null;
    }

    private float[] getBackgroundColor(Context context) {
        int colorInt = context.getResources().getColor(R.color.unfold_background);
    /**
     * Expected to be called whenever split screen visibility changes.
     *
     * @param visible True when split screen is visible
     */
    public void onSplitVisibilityChanged(boolean visible) {
        mSplitScreenVisible = visible;
    }

    private float[] getCurrentBackgroundColor() {
        if (mSplitScreenVisible) {
            return mSplitScreenBackgroundColor;
        } else {
            return mBackgroundColor;
        }
    }

    private float[] getRGBColorFromId(Context context, @ColorRes int id) {
        int colorInt = context.getResources().getColor(id);
        return new float[]{
                (float) red(colorInt) / 255.0F,
                (float) green(colorInt) / 255.0F,
+5 −0
Original line number Diff line number Diff line
@@ -292,6 +292,11 @@ public class SplitTaskUnfoldAnimator implements UnfoldTaskAnimator,
                .setCornerRadius(context.mLeash, 0.0F);
    }

    @Override
    public void onSplitVisibilityChanged(boolean visible) {
        mUnfoldBackgroundController.onSplitVisibilityChanged(visible);
    }

    private class AnimationContext {
        final SurfaceControl mLeash;