diff options
author | John Spurlock <jspurlock@google.com> | 2012-10-23 04:10:28 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-10-23 04:10:29 -0700 |
commit | 780a13b0f43fa5590bb22dc399d9faaf316d66f5 (patch) | |
tree | d51dc33f6380a4f70d8846163686d31e6a74a68b /packages/SystemUI | |
parent | 36425d19fc578c2042098d2045092990a811d0e6 (diff) | |
parent | 1bbd49d72eee001137b6d6e6ab3f353fe2c0433c (diff) | |
download | frameworks_base-780a13b0f43fa5590bb22dc399d9faaf316d66f5.zip frameworks_base-780a13b0f43fa5590bb22dc399d9faaf316d66f5.tar.gz frameworks_base-780a13b0f43fa5590bb22dc399d9faaf316d66f5.tar.bz2 |
Merge "Fix nav bar glitch when quickly turning screen off then on." into jb-mr1-dev
Diffstat (limited to 'packages/SystemUI')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java | 18 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java | 7 |
2 files changed, 25 insertions, 0 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 770ae6d..eef5446 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -18,6 +18,7 @@ package com.android.systemui.statusbar.phone; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; +import android.animation.LayoutTransition; import android.app.StatusBarManager; import android.content.Context; import android.content.res.Resources; @@ -34,6 +35,7 @@ import android.view.Display; import android.view.MotionEvent; import android.view.View; import android.view.Surface; +import android.view.ViewGroup; import android.view.WindowManager; import android.widget.ImageView; import android.widget.LinearLayout; @@ -62,6 +64,7 @@ public class NavigationBarView extends LinearLayout { int mBarSize; boolean mVertical; + boolean mScreenOn; boolean mHidden, mLowProfile, mShowMenu; int mDisabledFlags = 0; @@ -169,6 +172,11 @@ public class NavigationBarView extends LinearLayout { mBackAltLandIcon = res.getDrawable(R.drawable.ic_sysbar_back_ime); } + public void notifyScreenOn(boolean screenOn) { + mScreenOn = screenOn; + setDisabledFlags(mDisabledFlags, true); + } + View.OnTouchListener mLightsOutListener = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent ev) { @@ -231,6 +239,16 @@ public class NavigationBarView extends LinearLayout { setSlippery(disableHome && disableRecent && disableBack); + if (!mScreenOn && mCurrentView != null) { + ViewGroup navButtons = (ViewGroup) mCurrentView.findViewById(R.id.nav_buttons); + LayoutTransition lt = navButtons == null ? null : navButtons.getLayoutTransition(); + if (lt != null) { + lt.disableTransitionType( + LayoutTransition.CHANGE_APPEARING | LayoutTransition.CHANGE_DISAPPEARING | + LayoutTransition.APPEARING | LayoutTransition.DISAPPEARING); + } + } + getBackButton() .setVisibility(disableBack ? View.INVISIBLE : View.VISIBLE); getHomeButton() .setVisibility(disableHome ? View.INVISIBLE : View.VISIBLE); getRecentsButton().setVisibility(disableRecent ? View.INVISIBLE : View.VISIBLE); 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 f906176..1e0ab1b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -783,6 +783,11 @@ public class PhoneStatusBar extends BaseStatusBar { mWindowManager.updateViewLayout(mNavigationBarView, getNavigationBarLayoutParams()); } + private void notifyNavigationBarScreenOn(boolean screenOn) { + if (mNavigationBarView == null) return; + mNavigationBarView.notifyScreenOn(screenOn); + } + private WindowManager.LayoutParams getNavigationBarLayoutParams() { WindowManager.LayoutParams lp = new WindowManager.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, @@ -2256,6 +2261,7 @@ public class PhoneStatusBar extends BaseStatusBar { else if (Intent.ACTION_SCREEN_OFF.equals(action)) { // no waiting! makeExpandedInvisible(); + notifyNavigationBarScreenOn(false); } else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(action)) { if (DEBUG) { @@ -2271,6 +2277,7 @@ public class PhoneStatusBar extends BaseStatusBar { else if (Intent.ACTION_SCREEN_ON.equals(action)) { // work around problem where mDisplay.getRotation() is not stable while screen is off (bug 7086018) repositionNavigationBar(); + notifyNavigationBarScreenOn(true); } } }; |