From 37c11800600bae4f5fe0d4a1df9a8e7e91475574 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Tue, 18 Aug 2015 20:27:54 -0700 Subject: [PATCH] Don't animate in the navigation bar when going to full shade Fixes some jank. Bug: 22537253 Change-Id: Ia816fea6274e38cc2b18e2f28008b3a8341d37f7 --- .../statusbar/phone/NavigationBarView.java | 21 ++++++++++++------- .../statusbar/phone/PhoneStatusBar.java | 16 +++++++++++++- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 059ecee833a11..cc314761a6229 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -91,7 +91,8 @@ public class NavigationBarView extends LinearLayout { private OnVerticalChangedListener mOnVerticalChangedListener; private boolean mIsLayoutRtl; - private boolean mLayoutTransitionsEnabled; + private boolean mLayoutTransitionsEnabled = true; + private boolean mWakeAndUnlocking; private class NavTransitionListener implements TransitionListener { private boolean mBackTransitioning; @@ -361,13 +362,19 @@ public class NavigationBarView extends LinearLayout { } } - public void setWakeAndUnlocking(boolean wakeAndUnlocking) { - setUseFadingAnimations(wakeAndUnlocking); - setLayoutTransitionsEnabled(!wakeAndUnlocking); + public void setLayoutTransitionsEnabled(boolean enabled) { + mLayoutTransitionsEnabled = enabled; + updateLayoutTransitionsEnabled(); } - private void setLayoutTransitionsEnabled(boolean enabled) { - mLayoutTransitionsEnabled = enabled; + public void setWakeAndUnlocking(boolean wakeAndUnlocking) { + setUseFadingAnimations(wakeAndUnlocking); + mWakeAndUnlocking = wakeAndUnlocking; + updateLayoutTransitionsEnabled(); + } + + private void updateLayoutTransitionsEnabled() { + boolean enabled = !mWakeAndUnlocking && mLayoutTransitionsEnabled; ViewGroup navButtons = (ViewGroup) mCurrentView.findViewById(R.id.nav_buttons); LayoutTransition lt = navButtons.getLayoutTransition(); if (lt != null) { @@ -459,7 +466,7 @@ public class NavigationBarView extends LinearLayout { } mCurrentView = mRotatedViews[rot]; mCurrentView.setVisibility(View.VISIBLE); - setLayoutTransitionsEnabled(mLayoutTransitionsEnabled); + updateLayoutTransitionsEnabled(); getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index b277cc1657015..82dcf1d4f38c2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -154,6 +154,7 @@ import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.statusbar.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.stack.NotificationStackScrollLayout.OnChildLocationsChangedListener; +import com.android.systemui.statusbar.stack.StackStateAnimator; import com.android.systemui.statusbar.stack.StackViewState; import com.android.systemui.volume.VolumeComponent; @@ -3486,11 +3487,24 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, setBarState(StatusBarState.SHADE); if (mLeaveOpenOnKeyguardHide) { mLeaveOpenOnKeyguardHide = false; - mNotificationPanel.animateToFullShade(calculateGoingToFullShadeDelay()); + long delay = calculateGoingToFullShadeDelay(); + mNotificationPanel.animateToFullShade(delay); if (mDraggedDownRow != null) { mDraggedDownRow.setUserLocked(false); mDraggedDownRow = null; } + + // Disable layout transitions in navbar for this transition because the load is just + // too heavy for the CPU and GPU on any device. + if (mNavigationBarView != null) { + mNavigationBarView.setLayoutTransitionsEnabled(false); + mNavigationBarView.postDelayed(new Runnable() { + @Override + public void run() { + mNavigationBarView.setLayoutTransitionsEnabled(true); + } + }, delay + StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE); + } } else { instantCollapseNotificationPanel(); }