diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 7cc43a7b27156..1879ab719bb79 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -123,6 +123,9 @@ be sent during a change to the audio output device. --> true + + false + 200 diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index d630839db81d3..e476d893b9006 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -252,6 +252,7 @@ + diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 35870b1a49042..06527675349a1 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -569,6 +569,8 @@ public class WindowManagerService extends IWindowManager.Stub boolean mForceResizableTasks = false; boolean mSupportsPictureInPicture = false; + private boolean mDisableTransitionAnimation = false; + int getDragLayerLocked() { return mPolicy.getWindowLayerFromTypeLw(TYPE_DRAG) * TYPE_LAYER_MULTIPLIER + TYPE_LAYER_OFFSET; } @@ -966,6 +968,8 @@ public class WindowManagerService extends IWindowManager.Stub com.android.internal.R.bool.config_allowAnimationsInLowPowerMode); mMaxUiWidth = context.getResources().getInteger( com.android.internal.R.integer.config_maxUiWidth); + mDisableTransitionAnimation = context.getResources().getBoolean( + com.android.internal.R.bool.config_disableTransitionAnimation); mInputManager = inputManager; // Must be before createDisplayContentLocked. mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class); mDisplaySettings = new DisplaySettings(); @@ -2279,6 +2283,14 @@ public class WindowManagerService extends IWindowManager.Stub boolean applyAnimationLocked(AppWindowToken atoken, WindowManager.LayoutParams lp, int transit, boolean enter, boolean isVoiceInteraction) { + if (mDisableTransitionAnimation) { + if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) { + Slog.v(TAG_WM, + "applyAnimation: transition animation is disabled. atoken=" + atoken); + } + atoken.mAppAnimator.clearAnimation(); + return false; + } // Only apply an animation if the display isn't frozen. If it is // frozen, there is no reason to animate and it can cause strange // artifacts when we unfreeze the display if some different animation