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
This commit is contained in:
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -407,7 +407,6 @@ public class SplashscreenContentDrawer {
|
||||
}
|
||||
if (mEmptyView) {
|
||||
splashScreenView.setNotCopyable();
|
||||
splashScreenView.setRevealAnimationSupported(false);
|
||||
}
|
||||
splashScreenView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
|
||||
@Override
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
mSplashscreenContentDrawer.applyExitAnimation(record.mContentView,
|
||||
leash, frame,
|
||||
() -> removeWindowInner(record.mDecorView, true));
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user