NavBar: Slippery on the unsecured lock screen.
The NavBar is always non-slippery, except when: - the notification shade is showing - the 3 buttons (back,home,recents) are disabled Also fix unrelated bug that ignored the "show panel delay" before the first config change. Bug: 6614842 Change-Id: Ib40adaef122b563809398fdebbd8a88d8f0c7ffd
This commit is contained in:
@@ -225,11 +225,28 @@ public class NavigationBarView extends LinearLayout {
|
||||
final boolean disableRecent = ((disabledFlags & View.STATUS_BAR_DISABLE_RECENT) != 0);
|
||||
final boolean disableBack = ((disabledFlags & View.STATUS_BAR_DISABLE_BACK) != 0);
|
||||
|
||||
setSlippery(disableHome && disableRecent && disableBack);
|
||||
|
||||
getBackButton() .setVisibility(disableBack ? View.INVISIBLE : View.VISIBLE);
|
||||
getHomeButton() .setVisibility(disableHome ? View.INVISIBLE : View.VISIBLE);
|
||||
getRecentsButton().setVisibility(disableRecent ? View.INVISIBLE : View.VISIBLE);
|
||||
}
|
||||
|
||||
public void setSlippery(boolean newSlippery) {
|
||||
WindowManager.LayoutParams lp = (WindowManager.LayoutParams) getLayoutParams();
|
||||
if (lp != null) {
|
||||
boolean oldSlippery = (lp.flags & WindowManager.LayoutParams.FLAG_SLIPPERY) != 0;
|
||||
if (!oldSlippery && newSlippery) {
|
||||
lp.flags |= WindowManager.LayoutParams.FLAG_SLIPPERY;
|
||||
} else if (oldSlippery && !newSlippery) {
|
||||
lp.flags &= ~WindowManager.LayoutParams.FLAG_SLIPPERY;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
WindowManagerImpl.getDefault().updateViewLayout(this, lp);
|
||||
}
|
||||
}
|
||||
|
||||
public void setMenuVisibility(final boolean show) {
|
||||
setMenuVisibility(show, false);
|
||||
}
|
||||
|
||||
@@ -376,6 +376,8 @@ public class PhoneStatusBar extends BaseStatusBar {
|
||||
mIntruderAlertView.setBar(this);
|
||||
}
|
||||
|
||||
updateShowSearchHoldoff();
|
||||
|
||||
mStatusBarView.mService = this;
|
||||
|
||||
mChoreographer = Choreographer.getInstance();
|
||||
@@ -663,7 +665,6 @@ public class PhoneStatusBar extends BaseStatusBar {
|
||||
|
||||
lp.setTitle("NavigationBar");
|
||||
lp.windowAnimations = 0;
|
||||
|
||||
return lp;
|
||||
}
|
||||
|
||||
@@ -808,8 +809,12 @@ public class PhoneStatusBar extends BaseStatusBar {
|
||||
@Override
|
||||
protected void onConfigurationChanged(Configuration newConfig) {
|
||||
updateRecentsPanel();
|
||||
mShowSearchHoldoff = mContext.getResources().getInteger(
|
||||
R.integer.config_show_search_delay);
|
||||
updateShowSearchHoldoff();
|
||||
}
|
||||
|
||||
private void updateShowSearchHoldoff() {
|
||||
mShowSearchHoldoff = mContext.getResources().getInteger(
|
||||
R.integer.config_show_search_delay);
|
||||
}
|
||||
|
||||
private void loadNotificationShade() {
|
||||
@@ -1174,7 +1179,8 @@ public class PhoneStatusBar extends BaseStatusBar {
|
||||
|
||||
mExpandedVisible = true;
|
||||
mPile.setLayoutTransitionsEnabled(true);
|
||||
makeSlippery(mNavigationBarView, true);
|
||||
if (mNavigationBarView != null)
|
||||
mNavigationBarView.setSlippery(true);
|
||||
|
||||
updateCarrierLabelVisibility(true);
|
||||
|
||||
@@ -1198,19 +1204,6 @@ public class PhoneStatusBar extends BaseStatusBar {
|
||||
visibilityChanged(true);
|
||||
}
|
||||
|
||||
private static void makeSlippery(View view, boolean slippery) {
|
||||
if (view == null) {
|
||||
return;
|
||||
}
|
||||
WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams();
|
||||
if (slippery) {
|
||||
lp.flags |= WindowManager.LayoutParams.FLAG_SLIPPERY;
|
||||
} else {
|
||||
lp.flags &= ~WindowManager.LayoutParams.FLAG_SLIPPERY;
|
||||
}
|
||||
WindowManagerImpl.getDefault().updateViewLayout(view, lp);
|
||||
}
|
||||
|
||||
public void animateExpand() {
|
||||
if (SPEW) Slog.d(TAG, "Animate expand: expanded=" + mExpanded);
|
||||
if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
|
||||
@@ -1295,8 +1288,9 @@ public class PhoneStatusBar extends BaseStatusBar {
|
||||
}
|
||||
mExpandedVisible = false;
|
||||
mPile.setLayoutTransitionsEnabled(false);
|
||||
if (mNavigationBarView != null)
|
||||
mNavigationBarView.setSlippery(false);
|
||||
visibilityChanged(false);
|
||||
makeSlippery(mNavigationBarView, false);
|
||||
|
||||
// Shrink the window to the size of the status bar only
|
||||
WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mStatusBarWindow.getLayoutParams();
|
||||
|
||||
Reference in New Issue
Block a user