Loading packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +1 −5 Original line number Original line Diff line number Diff line Loading @@ -1102,11 +1102,7 @@ public abstract class BaseStatusBar extends SystemUI implements return km.inKeyguardRestrictedInputMode(); return km.inKeyguardRestrictedInputMode(); } } public void suspendAutohide() { public void setInteracting(boolean interacting) { // hook for subclasses } public void resumeAutohide() { // hook for subclasses // hook for subclasses } } Loading packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -86,9 +86,9 @@ public class DelegateViewHelper { } } if (action == MotionEvent.ACTION_DOWN) { if (action == MotionEvent.ACTION_DOWN) { mBar.suspendAutohide(); mBar.setInteracting(true); } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { mBar.resumeAutohide(); mBar.setInteracting(false); } } mDelegateView.getLocationOnScreen(mTempPoint); mDelegateView.getLocationOnScreen(mTempPoint); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java +0 −11 Original line number Original line Diff line number Diff line Loading @@ -64,17 +64,6 @@ public class BarTransitions { return mMode; return mMode; } } public void setTransparent(Drawable transparent) { mTransparent = transparent; if (mMode == MODE_TRANSPARENT) { transitionTo(MODE_TRANSPARENT); } } public void transitionTo(int mode) { transitionTo(mode, false); } public void transitionTo(int mode, boolean animate) { public void transitionTo(int mode, boolean animate) { if (mMode == mode) return; if (mMode == mode) return; int oldMode = mMode; int oldMode = mMode; Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -112,9 +112,11 @@ public class NavigationBarView extends LinearLayout { } } private final class NavigationBarTransitions extends BarTransitions { private final class NavigationBarTransitions extends BarTransitions { private static final boolean ENABLE_GRADIENT = false; // until we can smooth transition private final Drawable mTransparentBottom; private final Drawable mTransparentBottom; private final Drawable mTransparentRight; private final Drawable mTransparentRight; private final int mTransparentColor; public NavigationBarTransitions(Context context) { public NavigationBarTransitions(Context context) { super(context, NavigationBarView.this); super(context, NavigationBarView.this); Loading @@ -125,12 +127,20 @@ public class NavigationBarView extends LinearLayout { }; }; mTransparentBottom = new GradientDrawable(Orientation.BOTTOM_TOP, gradientColors); mTransparentBottom = new GradientDrawable(Orientation.BOTTOM_TOP, gradientColors); mTransparentRight = new GradientDrawable(Orientation.RIGHT_LEFT, gradientColors); mTransparentRight = new GradientDrawable(Orientation.RIGHT_LEFT, gradientColors); mTransparentColor = res.getColor(R.color.status_bar_background_transparent); } } public void setVertical(boolean isVertical) { public void setVertical(boolean isVertical) { if (!ENABLE_GRADIENT) return; mTransparent = isVertical ? mTransparentRight : mTransparentBottom; mTransparent = isVertical ? mTransparentRight : mTransparentBottom; } } @Override protected Integer getBackgroundColor(int mode) { if (!ENABLE_GRADIENT && mode == MODE_TRANSPARENT) return mTransparentColor; return super.getBackgroundColor(mode); } @Override @Override protected void onTransition(int oldMode, int newMode, boolean animate) { protected void onTransition(int oldMode, int newMode, boolean animate) { super.onTransition(oldMode, newMode, animate); super.onTransition(oldMode, newMode, animate); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +70 −37 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.statusbar.phone; package com.android.systemui.statusbar.phone; import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT; import static android.app.StatusBarManager.WINDOW_STATE_SHOWING; import static android.app.StatusBarManager.windowStateToString; import static android.app.StatusBarManager.windowStateToString; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT; Loading Loading @@ -170,7 +172,7 @@ public class PhoneStatusBar extends BaseStatusBar { StatusBarWindowView mStatusBarWindow; StatusBarWindowView mStatusBarWindow; PhoneStatusBarView mStatusBarView; PhoneStatusBarView mStatusBarView; private int mStatusBarWindowState; private int mStatusBarWindowState = WINDOW_STATE_SHOWING; int mPixelFormat; int mPixelFormat; Object mQueueLock = new Object(); Object mQueueLock = new Object(); Loading Loading @@ -234,7 +236,7 @@ public class PhoneStatusBar extends BaseStatusBar { // on-screen navigation buttons // on-screen navigation buttons private NavigationBarView mNavigationBarView = null; private NavigationBarView mNavigationBarView = null; private int mNavigationBarWindowState; private int mNavigationBarWindowState = WINDOW_STATE_SHOWING; // the tracker view // the tracker view int mTrackingPosition; // the position of the top of the tracking view. int mTrackingPosition; // the position of the top of the tracking view. Loading Loading @@ -312,7 +314,10 @@ public class PhoneStatusBar extends BaseStatusBar { } } }; }; private boolean mInteracting; private boolean mAutohideSuspended; private boolean mAutohideSuspended; private int mStatusBarMode; private int mNavigationBarMode; private final Runnable mAutohide = new Runnable() { private final Runnable mAutohide = new Runnable() { @Override @Override Loading Loading @@ -1394,7 +1399,7 @@ public class PhoneStatusBar extends BaseStatusBar { visibilityChanged(true); visibilityChanged(true); suspendAutohide(); setInteracting(true); } } public void animateCollapsePanels() { public void animateCollapsePanels() { Loading Loading @@ -1678,8 +1683,7 @@ public class PhoneStatusBar extends BaseStatusBar { mPostCollapseCleanup = null; mPostCollapseCleanup = null; } } // Reschedule suspended auto-hide if necessary setInteracting(false); resumeAutohide(); } } /** /** Loading Loading @@ -1826,7 +1830,7 @@ public class PhoneStatusBar extends BaseStatusBar { hideCling(); hideCling(); } } suspendAutohide(); setInteracting(true); return false; return false; } } Loading @@ -1843,11 +1847,12 @@ public class PhoneStatusBar extends BaseStatusBar { if (mNavigationBarView != null) { if (mNavigationBarView != null) { mNavigationBarView.setNavigationIconHints(hints); mNavigationBarView.setNavigationIconHints(hints); } } checkBarModes(); } } @Override // CommandQueue @Override // CommandQueue public void setWindowState(int window, int state) { public void setWindowState(int window, int state) { boolean showing = state == StatusBarManager.WINDOW_STATE_SHOWING; boolean showing = state == WINDOW_STATE_SHOWING; if (mStatusBarWindow != null if (mStatusBarWindow != null && window == StatusBarManager.WINDOW_STATUS_BAR && window == StatusBarManager.WINDOW_STATUS_BAR && mStatusBarWindowState != state) { && mStatusBarWindowState != state) { Loading Loading @@ -1898,17 +1903,28 @@ public class PhoneStatusBar extends BaseStatusBar { } } // update status bar mode // update status bar mode int sbMode = updateBarMode(oldVal, newVal, mStatusBarView.getBarTransitions(), final int sbMode = computeBarMode(oldVal, newVal, mStatusBarView.getBarTransitions(), View.STATUS_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS, View.STATUS_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS); mStatusBarWindowState); // update navigation bar mode // update navigation bar mode int nbMode = mNavigationBarView == null ? -1 : updateBarMode( final int nbMode = mNavigationBarView == null ? -1 : computeBarMode( oldVal, newVal, mNavigationBarView.getBarTransitions(), oldVal, newVal, mNavigationBarView.getBarTransitions(), View.NAVIGATION_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION, View.NAVIGATION_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION); mNavigationBarWindowState); final boolean sbModeChanged = sbMode != -1; final boolean nbModeChanged = nbMode != -1; if (sbMode != -1 || nbMode != -1) { boolean checkBarModes = false; if (sbModeChanged && sbMode != mStatusBarMode) { mStatusBarMode = sbMode; checkBarModes = true; } if (nbModeChanged && nbMode != mNavigationBarMode) { mNavigationBarMode = nbMode; checkBarModes = true; } if (checkBarModes) { checkBarModes(); } if (sbModeChanged || nbModeChanged) { // update transient bar autohide // update transient bar autohide if (sbMode == MODE_SEMI_TRANSPARENT || nbMode == MODE_SEMI_TRANSPARENT) { if (sbMode == MODE_SEMI_TRANSPARENT || nbMode == MODE_SEMI_TRANSPARENT) { scheduleAutohide(); scheduleAutohide(); Loading @@ -1935,15 +1951,13 @@ public class PhoneStatusBar extends BaseStatusBar { return mStatusBarView.getBarTransitions().getMode(); return mStatusBarView.getBarTransitions().getMode(); } } private int updateBarMode(int oldVis, int newVis, BarTransitions transitions, private int computeBarMode(int oldVis, int newVis, BarTransitions transitions, int transientFlag, int transparentFlag, int windowState) { int transientFlag, int transparentFlag) { final int oldMode = barMode(oldVis, transientFlag, transparentFlag); final int oldMode = barMode(oldVis, transientFlag, transparentFlag); final int newMode = barMode(newVis, transientFlag, transparentFlag); final int newMode = barMode(newVis, transientFlag, transparentFlag); if (oldMode == newMode) { if (oldMode == newMode) { return -1; // no mode change return -1; // no mode change } } final boolean animate = windowState == StatusBarManager.WINDOW_STATE_SHOWING; transitions.transitionTo(newMode, animate); return newMode; return newMode; } } Loading @@ -1953,35 +1967,49 @@ public class PhoneStatusBar extends BaseStatusBar { : MODE_OPAQUE; : MODE_OPAQUE; } } private final Runnable mResumeSemiTransparent = new Runnable() { private void checkBarModes() { checkBarMode(mStatusBarMode, mStatusBarWindowState, mStatusBarView.getBarTransitions()); if (mNavigationBarView != null) { checkBarMode(mNavigationBarMode, mNavigationBarWindowState, mNavigationBarView.getBarTransitions()); } } private void checkBarMode(int mode, int windowState, BarTransitions transitions) { final boolean imeVisible = (mNavigationIconHints & NAVIGATION_HINT_BACK_ALT) != 0; final int finalMode = imeVisible || mInteracting ? MODE_OPAQUE : mode; final boolean animate = windowState == WINDOW_STATE_SHOWING; transitions.transitionTo(finalMode, animate); } private final Runnable mCheckBarModes = new Runnable() { @Override @Override public void run() { public void run() { if ((mSystemUiVisibility & STATUS_OR_NAV_TRANSIENT) != 0) { checkBarModes(); animateTransitionTo(BarTransitions.MODE_SEMI_TRANSPARENT); } }}; }}; @Override @Override public void resumeAutohide() { public void setInteracting(boolean interacting) { if (mAutohideSuspended) { mInteracting = interacting; scheduleAutohide(); if (mInteracting) { mHandler.postDelayed(mResumeSemiTransparent, 500); // longer than home -> launcher suspendAutohide(); } else { resumeSuspendedAutohide(); } } checkBarModes(); } } private void animateTransitionTo(int newMode) { private void resumeSuspendedAutohide() { mStatusBarView.getBarTransitions().transitionTo(newMode, true /*animate*/); if (mAutohideSuspended) { if (mNavigationBarView != null) { scheduleAutohide(); mNavigationBarView.getBarTransitions().transitionTo(newMode, true /*animate*/); mHandler.postDelayed(mCheckBarModes, 500); // longer than home -> launcher } } } } @Override private void suspendAutohide() { public void suspendAutohide() { mHandler.removeCallbacks(mAutohide); mHandler.removeCallbacks(mAutohide); mHandler.removeCallbacks(mResumeSemiTransparent); mHandler.removeCallbacks(mCheckBarModes); mAutohideSuspended = (mSystemUiVisibility & STATUS_OR_NAV_TRANSIENT) != 0; mAutohideSuspended = (mSystemUiVisibility & STATUS_OR_NAV_TRANSIENT) != 0; animateTransitionTo(BarTransitions.MODE_OPAQUE); } } private void cancelAutohide() { private void cancelAutohide() { Loading Loading @@ -2087,8 +2115,8 @@ public class PhoneStatusBar extends BaseStatusBar { || ((vis & InputMethodService.IME_VISIBLE) != 0); || ((vis & InputMethodService.IME_VISIBLE) != 0); mCommandQueue.setNavigationIconHints( mCommandQueue.setNavigationIconHints( altBack ? (mNavigationIconHints | StatusBarManager.NAVIGATION_HINT_BACK_ALT) altBack ? (mNavigationIconHints | NAVIGATION_HINT_BACK_ALT) : (mNavigationIconHints & ~StatusBarManager.NAVIGATION_HINT_BACK_ALT)); : (mNavigationIconHints & ~NAVIGATION_HINT_BACK_ALT)); if (mQS != null) mQS.setImeWindowStatus(vis > 0); if (mQS != null) mQS.setImeWindowStatus(vis > 0); } } Loading Loading @@ -2186,12 +2214,17 @@ public class PhoneStatusBar extends BaseStatusBar { + " scroll " + mScrollView.getScrollX() + "," + mScrollView.getScrollY()); + " scroll " + mScrollView.getScrollX() + "," + mScrollView.getScrollY()); } } pw.print(" mInteracting="); pw.println(mInteracting); pw.print(" mStatusBarWindowState="); pw.print(" mStatusBarWindowState="); pw.println(windowStateToString(mStatusBarWindowState)); pw.println(windowStateToString(mStatusBarWindowState)); pw.print(" mStatusBarMode="); pw.println(BarTransitions.modeToString(mStatusBarMode)); dumpBarTransitions(pw, "mStatusBarView", mStatusBarView.getBarTransitions()); dumpBarTransitions(pw, "mStatusBarView", mStatusBarView.getBarTransitions()); if (mNavigationBarView != null) { if (mNavigationBarView != null) { pw.print(" mNavigationBarWindowState="); pw.print(" mNavigationBarWindowState="); pw.println(windowStateToString(mNavigationBarWindowState)); pw.println(windowStateToString(mNavigationBarWindowState)); pw.print(" mNavigationBarMode="); pw.println(BarTransitions.modeToString(mNavigationBarMode)); dumpBarTransitions(pw, "mNavigationBarView", mNavigationBarView.getBarTransitions()); dumpBarTransitions(pw, "mNavigationBarView", mNavigationBarView.getBarTransitions()); } } Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +1 −5 Original line number Original line Diff line number Diff line Loading @@ -1102,11 +1102,7 @@ public abstract class BaseStatusBar extends SystemUI implements return km.inKeyguardRestrictedInputMode(); return km.inKeyguardRestrictedInputMode(); } } public void suspendAutohide() { public void setInteracting(boolean interacting) { // hook for subclasses } public void resumeAutohide() { // hook for subclasses // hook for subclasses } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -86,9 +86,9 @@ public class DelegateViewHelper { } } if (action == MotionEvent.ACTION_DOWN) { if (action == MotionEvent.ACTION_DOWN) { mBar.suspendAutohide(); mBar.setInteracting(true); } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { mBar.resumeAutohide(); mBar.setInteracting(false); } } mDelegateView.getLocationOnScreen(mTempPoint); mDelegateView.getLocationOnScreen(mTempPoint); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java +0 −11 Original line number Original line Diff line number Diff line Loading @@ -64,17 +64,6 @@ public class BarTransitions { return mMode; return mMode; } } public void setTransparent(Drawable transparent) { mTransparent = transparent; if (mMode == MODE_TRANSPARENT) { transitionTo(MODE_TRANSPARENT); } } public void transitionTo(int mode) { transitionTo(mode, false); } public void transitionTo(int mode, boolean animate) { public void transitionTo(int mode, boolean animate) { if (mMode == mode) return; if (mMode == mode) return; int oldMode = mMode; int oldMode = mMode; Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -112,9 +112,11 @@ public class NavigationBarView extends LinearLayout { } } private final class NavigationBarTransitions extends BarTransitions { private final class NavigationBarTransitions extends BarTransitions { private static final boolean ENABLE_GRADIENT = false; // until we can smooth transition private final Drawable mTransparentBottom; private final Drawable mTransparentBottom; private final Drawable mTransparentRight; private final Drawable mTransparentRight; private final int mTransparentColor; public NavigationBarTransitions(Context context) { public NavigationBarTransitions(Context context) { super(context, NavigationBarView.this); super(context, NavigationBarView.this); Loading @@ -125,12 +127,20 @@ public class NavigationBarView extends LinearLayout { }; }; mTransparentBottom = new GradientDrawable(Orientation.BOTTOM_TOP, gradientColors); mTransparentBottom = new GradientDrawable(Orientation.BOTTOM_TOP, gradientColors); mTransparentRight = new GradientDrawable(Orientation.RIGHT_LEFT, gradientColors); mTransparentRight = new GradientDrawable(Orientation.RIGHT_LEFT, gradientColors); mTransparentColor = res.getColor(R.color.status_bar_background_transparent); } } public void setVertical(boolean isVertical) { public void setVertical(boolean isVertical) { if (!ENABLE_GRADIENT) return; mTransparent = isVertical ? mTransparentRight : mTransparentBottom; mTransparent = isVertical ? mTransparentRight : mTransparentBottom; } } @Override protected Integer getBackgroundColor(int mode) { if (!ENABLE_GRADIENT && mode == MODE_TRANSPARENT) return mTransparentColor; return super.getBackgroundColor(mode); } @Override @Override protected void onTransition(int oldMode, int newMode, boolean animate) { protected void onTransition(int oldMode, int newMode, boolean animate) { super.onTransition(oldMode, newMode, animate); super.onTransition(oldMode, newMode, animate); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +70 −37 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.statusbar.phone; package com.android.systemui.statusbar.phone; import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT; import static android.app.StatusBarManager.WINDOW_STATE_SHOWING; import static android.app.StatusBarManager.windowStateToString; import static android.app.StatusBarManager.windowStateToString; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT; Loading Loading @@ -170,7 +172,7 @@ public class PhoneStatusBar extends BaseStatusBar { StatusBarWindowView mStatusBarWindow; StatusBarWindowView mStatusBarWindow; PhoneStatusBarView mStatusBarView; PhoneStatusBarView mStatusBarView; private int mStatusBarWindowState; private int mStatusBarWindowState = WINDOW_STATE_SHOWING; int mPixelFormat; int mPixelFormat; Object mQueueLock = new Object(); Object mQueueLock = new Object(); Loading Loading @@ -234,7 +236,7 @@ public class PhoneStatusBar extends BaseStatusBar { // on-screen navigation buttons // on-screen navigation buttons private NavigationBarView mNavigationBarView = null; private NavigationBarView mNavigationBarView = null; private int mNavigationBarWindowState; private int mNavigationBarWindowState = WINDOW_STATE_SHOWING; // the tracker view // the tracker view int mTrackingPosition; // the position of the top of the tracking view. int mTrackingPosition; // the position of the top of the tracking view. Loading Loading @@ -312,7 +314,10 @@ public class PhoneStatusBar extends BaseStatusBar { } } }; }; private boolean mInteracting; private boolean mAutohideSuspended; private boolean mAutohideSuspended; private int mStatusBarMode; private int mNavigationBarMode; private final Runnable mAutohide = new Runnable() { private final Runnable mAutohide = new Runnable() { @Override @Override Loading Loading @@ -1394,7 +1399,7 @@ public class PhoneStatusBar extends BaseStatusBar { visibilityChanged(true); visibilityChanged(true); suspendAutohide(); setInteracting(true); } } public void animateCollapsePanels() { public void animateCollapsePanels() { Loading Loading @@ -1678,8 +1683,7 @@ public class PhoneStatusBar extends BaseStatusBar { mPostCollapseCleanup = null; mPostCollapseCleanup = null; } } // Reschedule suspended auto-hide if necessary setInteracting(false); resumeAutohide(); } } /** /** Loading Loading @@ -1826,7 +1830,7 @@ public class PhoneStatusBar extends BaseStatusBar { hideCling(); hideCling(); } } suspendAutohide(); setInteracting(true); return false; return false; } } Loading @@ -1843,11 +1847,12 @@ public class PhoneStatusBar extends BaseStatusBar { if (mNavigationBarView != null) { if (mNavigationBarView != null) { mNavigationBarView.setNavigationIconHints(hints); mNavigationBarView.setNavigationIconHints(hints); } } checkBarModes(); } } @Override // CommandQueue @Override // CommandQueue public void setWindowState(int window, int state) { public void setWindowState(int window, int state) { boolean showing = state == StatusBarManager.WINDOW_STATE_SHOWING; boolean showing = state == WINDOW_STATE_SHOWING; if (mStatusBarWindow != null if (mStatusBarWindow != null && window == StatusBarManager.WINDOW_STATUS_BAR && window == StatusBarManager.WINDOW_STATUS_BAR && mStatusBarWindowState != state) { && mStatusBarWindowState != state) { Loading Loading @@ -1898,17 +1903,28 @@ public class PhoneStatusBar extends BaseStatusBar { } } // update status bar mode // update status bar mode int sbMode = updateBarMode(oldVal, newVal, mStatusBarView.getBarTransitions(), final int sbMode = computeBarMode(oldVal, newVal, mStatusBarView.getBarTransitions(), View.STATUS_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS, View.STATUS_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS); mStatusBarWindowState); // update navigation bar mode // update navigation bar mode int nbMode = mNavigationBarView == null ? -1 : updateBarMode( final int nbMode = mNavigationBarView == null ? -1 : computeBarMode( oldVal, newVal, mNavigationBarView.getBarTransitions(), oldVal, newVal, mNavigationBarView.getBarTransitions(), View.NAVIGATION_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION, View.NAVIGATION_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION); mNavigationBarWindowState); final boolean sbModeChanged = sbMode != -1; final boolean nbModeChanged = nbMode != -1; if (sbMode != -1 || nbMode != -1) { boolean checkBarModes = false; if (sbModeChanged && sbMode != mStatusBarMode) { mStatusBarMode = sbMode; checkBarModes = true; } if (nbModeChanged && nbMode != mNavigationBarMode) { mNavigationBarMode = nbMode; checkBarModes = true; } if (checkBarModes) { checkBarModes(); } if (sbModeChanged || nbModeChanged) { // update transient bar autohide // update transient bar autohide if (sbMode == MODE_SEMI_TRANSPARENT || nbMode == MODE_SEMI_TRANSPARENT) { if (sbMode == MODE_SEMI_TRANSPARENT || nbMode == MODE_SEMI_TRANSPARENT) { scheduleAutohide(); scheduleAutohide(); Loading @@ -1935,15 +1951,13 @@ public class PhoneStatusBar extends BaseStatusBar { return mStatusBarView.getBarTransitions().getMode(); return mStatusBarView.getBarTransitions().getMode(); } } private int updateBarMode(int oldVis, int newVis, BarTransitions transitions, private int computeBarMode(int oldVis, int newVis, BarTransitions transitions, int transientFlag, int transparentFlag, int windowState) { int transientFlag, int transparentFlag) { final int oldMode = barMode(oldVis, transientFlag, transparentFlag); final int oldMode = barMode(oldVis, transientFlag, transparentFlag); final int newMode = barMode(newVis, transientFlag, transparentFlag); final int newMode = barMode(newVis, transientFlag, transparentFlag); if (oldMode == newMode) { if (oldMode == newMode) { return -1; // no mode change return -1; // no mode change } } final boolean animate = windowState == StatusBarManager.WINDOW_STATE_SHOWING; transitions.transitionTo(newMode, animate); return newMode; return newMode; } } Loading @@ -1953,35 +1967,49 @@ public class PhoneStatusBar extends BaseStatusBar { : MODE_OPAQUE; : MODE_OPAQUE; } } private final Runnable mResumeSemiTransparent = new Runnable() { private void checkBarModes() { checkBarMode(mStatusBarMode, mStatusBarWindowState, mStatusBarView.getBarTransitions()); if (mNavigationBarView != null) { checkBarMode(mNavigationBarMode, mNavigationBarWindowState, mNavigationBarView.getBarTransitions()); } } private void checkBarMode(int mode, int windowState, BarTransitions transitions) { final boolean imeVisible = (mNavigationIconHints & NAVIGATION_HINT_BACK_ALT) != 0; final int finalMode = imeVisible || mInteracting ? MODE_OPAQUE : mode; final boolean animate = windowState == WINDOW_STATE_SHOWING; transitions.transitionTo(finalMode, animate); } private final Runnable mCheckBarModes = new Runnable() { @Override @Override public void run() { public void run() { if ((mSystemUiVisibility & STATUS_OR_NAV_TRANSIENT) != 0) { checkBarModes(); animateTransitionTo(BarTransitions.MODE_SEMI_TRANSPARENT); } }}; }}; @Override @Override public void resumeAutohide() { public void setInteracting(boolean interacting) { if (mAutohideSuspended) { mInteracting = interacting; scheduleAutohide(); if (mInteracting) { mHandler.postDelayed(mResumeSemiTransparent, 500); // longer than home -> launcher suspendAutohide(); } else { resumeSuspendedAutohide(); } } checkBarModes(); } } private void animateTransitionTo(int newMode) { private void resumeSuspendedAutohide() { mStatusBarView.getBarTransitions().transitionTo(newMode, true /*animate*/); if (mAutohideSuspended) { if (mNavigationBarView != null) { scheduleAutohide(); mNavigationBarView.getBarTransitions().transitionTo(newMode, true /*animate*/); mHandler.postDelayed(mCheckBarModes, 500); // longer than home -> launcher } } } } @Override private void suspendAutohide() { public void suspendAutohide() { mHandler.removeCallbacks(mAutohide); mHandler.removeCallbacks(mAutohide); mHandler.removeCallbacks(mResumeSemiTransparent); mHandler.removeCallbacks(mCheckBarModes); mAutohideSuspended = (mSystemUiVisibility & STATUS_OR_NAV_TRANSIENT) != 0; mAutohideSuspended = (mSystemUiVisibility & STATUS_OR_NAV_TRANSIENT) != 0; animateTransitionTo(BarTransitions.MODE_OPAQUE); } } private void cancelAutohide() { private void cancelAutohide() { Loading Loading @@ -2087,8 +2115,8 @@ public class PhoneStatusBar extends BaseStatusBar { || ((vis & InputMethodService.IME_VISIBLE) != 0); || ((vis & InputMethodService.IME_VISIBLE) != 0); mCommandQueue.setNavigationIconHints( mCommandQueue.setNavigationIconHints( altBack ? (mNavigationIconHints | StatusBarManager.NAVIGATION_HINT_BACK_ALT) altBack ? (mNavigationIconHints | NAVIGATION_HINT_BACK_ALT) : (mNavigationIconHints & ~StatusBarManager.NAVIGATION_HINT_BACK_ALT)); : (mNavigationIconHints & ~NAVIGATION_HINT_BACK_ALT)); if (mQS != null) mQS.setImeWindowStatus(vis > 0); if (mQS != null) mQS.setImeWindowStatus(vis > 0); } } Loading Loading @@ -2186,12 +2214,17 @@ public class PhoneStatusBar extends BaseStatusBar { + " scroll " + mScrollView.getScrollX() + "," + mScrollView.getScrollY()); + " scroll " + mScrollView.getScrollX() + "," + mScrollView.getScrollY()); } } pw.print(" mInteracting="); pw.println(mInteracting); pw.print(" mStatusBarWindowState="); pw.print(" mStatusBarWindowState="); pw.println(windowStateToString(mStatusBarWindowState)); pw.println(windowStateToString(mStatusBarWindowState)); pw.print(" mStatusBarMode="); pw.println(BarTransitions.modeToString(mStatusBarMode)); dumpBarTransitions(pw, "mStatusBarView", mStatusBarView.getBarTransitions()); dumpBarTransitions(pw, "mStatusBarView", mStatusBarView.getBarTransitions()); if (mNavigationBarView != null) { if (mNavigationBarView != null) { pw.print(" mNavigationBarWindowState="); pw.print(" mNavigationBarWindowState="); pw.println(windowStateToString(mNavigationBarWindowState)); pw.println(windowStateToString(mNavigationBarWindowState)); pw.print(" mNavigationBarMode="); pw.println(BarTransitions.modeToString(mNavigationBarMode)); dumpBarTransitions(pw, "mNavigationBarView", mNavigationBarView.getBarTransitions()); dumpBarTransitions(pw, "mNavigationBarView", mNavigationBarView.getBarTransitions()); } } Loading