summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI
diff options
context:
space:
mode:
authorJohn Spurlock <jspurlock@google.com>2012-10-23 04:10:28 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-10-23 04:10:29 -0700
commit780a13b0f43fa5590bb22dc399d9faaf316d66f5 (patch)
treed51dc33f6380a4f70d8846163686d31e6a74a68b /packages/SystemUI
parent36425d19fc578c2042098d2045092990a811d0e6 (diff)
parent1bbd49d72eee001137b6d6e6ab3f353fe2c0433c (diff)
downloadframeworks_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.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java7
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);
}
}
};