diff options
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java | 47 |
1 files changed, 40 insertions, 7 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 416fb36..ed49f39 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -91,6 +91,7 @@ public class NavigationBarView extends LinearLayout { private OnVerticalChangedListener mOnVerticalChangedListener; private boolean mIsLayoutRtl; + private boolean mLayoutTransitionsEnabled; private class NavTransitionListener implements TransitionListener { private boolean mBackTransitioning; @@ -333,13 +334,6 @@ public class NavigationBarView extends LinearLayout { if (!lt.getTransitionListeners().contains(mTransitionListener)) { lt.addTransitionListener(mTransitionListener); } - if (!mScreenOn && mCurrentView != null) { - lt.disableTransitionType( - LayoutTransition.CHANGE_APPEARING | - LayoutTransition.CHANGE_DISAPPEARING | - LayoutTransition.APPEARING | - LayoutTransition.DISAPPEARING); - } } } if (inLockTask() && disableRecent && !disableHome) { @@ -367,6 +361,44 @@ public class NavigationBarView extends LinearLayout { } } + public void setWakeAndUnlocking(boolean wakeAndUnlocking) { + setUseFadingAnimations(wakeAndUnlocking); + setLayoutTransitionsEnabled(!wakeAndUnlocking); + } + + private void setLayoutTransitionsEnabled(boolean enabled) { + mLayoutTransitionsEnabled = enabled; + ViewGroup navButtons = (ViewGroup) mCurrentView.findViewById(R.id.nav_buttons); + LayoutTransition lt = navButtons.getLayoutTransition(); + if (enabled) { + lt.enableTransitionType(LayoutTransition.APPEARING); + lt.enableTransitionType(LayoutTransition.DISAPPEARING); + lt.enableTransitionType(LayoutTransition.CHANGE_APPEARING); + lt.enableTransitionType(LayoutTransition.CHANGE_DISAPPEARING); + } else { + lt.disableTransitionType(LayoutTransition.APPEARING); + lt.disableTransitionType(LayoutTransition.DISAPPEARING); + lt.disableTransitionType(LayoutTransition.CHANGE_APPEARING); + lt.disableTransitionType(LayoutTransition.CHANGE_DISAPPEARING); + } + } + + private void setUseFadingAnimations(boolean useFadingAnimations) { + WindowManager.LayoutParams lp = (WindowManager.LayoutParams) getLayoutParams(); + if (lp != null) { + boolean old = lp.windowAnimations != 0; + if (!old && useFadingAnimations) { + lp.windowAnimations = R.style.Animation_NavigationBarFadeIn; + } else if (old && !useFadingAnimations) { + lp.windowAnimations = 0; + } else { + return; + } + WindowManager wm = (WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE); + wm.updateViewLayout(this, lp); + } + } + public void setSlippery(boolean newSlippery) { WindowManager.LayoutParams lp = (WindowManager.LayoutParams) getLayoutParams(); if (lp != null) { @@ -425,6 +457,7 @@ public class NavigationBarView extends LinearLayout { } mCurrentView = mRotatedViews[rot]; mCurrentView.setVisibility(View.VISIBLE); + setLayoutTransitionsEnabled(mLayoutTransitionsEnabled); getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener); |