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

Commit 192aef77 authored by wilsonshih's avatar wilsonshih
Browse files

Always do the app reveal animation when dismissing the splash screen

Let empty-style splash screen do reveal animation.
Also remove the extra animation duration if the icon is empty.

Bug: 190695897
Bug: 190695665
Test: manual
Test: atest SplashscreenTests
Change-Id: I8b3b52369c12fbddc32af8c40f37650cc84a88dd
parent aa12b6a4
Loading
Loading
Loading
Loading
+0 −20
Original line number Diff line number Diff line
@@ -85,7 +85,6 @@ public final class SplashScreenView extends FrameLayout {
                    | FLAG_TRANSLUCENT_NAVIGATION | FLAG_TRANSLUCENT_STATUS;

    private boolean mNotCopyable;
    private boolean mRevealAnimationSupported = true;
    private int mInitBackgroundColor;
    private int mInitIconBackgroundColor;
    private View mIconView;
@@ -352,25 +351,6 @@ public final class SplashScreenView extends FrameLayout {
        return !mNotCopyable;
    }

    /**
     * If set to true, indicates to the system that this view can be dismissed by playing the
     * Reveal animation.
     * <p>
     * If the exit animation is handled by the client, the animation won't be played anyway.
     * @hide
     */
    public void setRevealAnimationSupported(boolean support) {
        mRevealAnimationSupported = support;
    }

    /**
     * Whether this view support reveal animation.
     * @hide
     */
    public boolean isRevealAnimationSupported() {
        return mRevealAnimationSupported;
    }

    /**
     * Called when this {@link SplashScreenView} has been copied to be transferred to the client.
     *
+1 −1
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener {
        }

        View iconView = view.getIconView();
        if (iconView == null) {
        if (iconView == null || iconView.getBackground() == null) {
            mIconFadeOutDuration = 0;
            mIconStartAlpha = 0;
            mAppRevealDelay = 0;
+0 −1
Original line number Diff line number Diff line
@@ -407,7 +407,6 @@ public class SplashscreenContentDrawer {
            }
            if (mEmptyView) {
                splashScreenView.setNotCopyable();
                splashScreenView.setRevealAnimationSupported(false);
            }
            splashScreenView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
                @Override
+6 −14
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.hardware.display.DisplayManager;
import android.os.IBinder;
import android.os.SystemProperties;
import android.os.Trace;
import android.os.UserHandle;
import android.util.Slog;
@@ -107,8 +106,6 @@ public class StartingSurfaceDrawer {
    final SplashscreenContentDrawer mSplashscreenContentDrawer;
    private Choreographer mChoreographer;

    private static final boolean DEBUG_ENABLE_REVEAL_ANIMATION =
            SystemProperties.getBoolean("persist.debug.enable_reveal_animation", true);
    /**
     * @param splashScreenExecutor The thread used to control add and remove starting window.
     */
@@ -445,24 +442,19 @@ public class StartingSurfaceDrawer {
                if (DEBUG_SPLASH_SCREEN) {
                    Slog.v(TAG, "Removing splash screen window for task: " + taskId);
                }
                if (record.mContentView != null
                        && record.mContentView.isRevealAnimationSupported()) {
                if (record.mContentView != null) {
                    if (playRevealAnimation) {
                        if (DEBUG_ENABLE_REVEAL_ANIMATION) {
                        mSplashscreenContentDrawer.applyExitAnimation(record.mContentView,
                                leash, frame,
                                () -> removeWindowInner(record.mDecorView, true));
                        } else {
                            // using the default exit animation from framework
                            removeWindowInner(record.mDecorView, false);
                        }
                    } else {
                        // the SplashScreenView has been copied to client, hide the view to skip
                        // default exit animation
                        removeWindowInner(record.mDecorView, true);
                    }
                } else {
                    // this is a blank splash screen, don't apply reveal animation
                    // shouldn't happen
                    Slog.e(TAG, "Found empty splash screen, remove!");
                    removeWindowInner(record.mDecorView, false);
                }
            }