Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -26447,6 +26447,7 @@ package android.view { field public static final int SOUND_EFFECTS_ENABLED = 134217728; // 0x8000000 field public static final deprecated int STATUS_BAR_HIDDEN = 1; // 0x1 field public static final deprecated int STATUS_BAR_VISIBLE = 0; // 0x0 field public static final int SYSTEM_UI_FLAG_ALLOW_OVERLAY = 2048; // 0x800 field public static final int SYSTEM_UI_FLAG_FULLSCREEN = 4; // 0x4 field public static final int SYSTEM_UI_FLAG_HIDE_NAVIGATION = 2; // 0x2 field public static final int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN = 1024; // 0x400 core/java/android/view/View.java +22 −1 Original line number Diff line number Diff line Loading @@ -2361,6 +2361,15 @@ public class View implements Drawable.Callback, KeyEvent.Callback, */ public static final int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN = 0x00000400; /** * Flag for {@link #setSystemUiVisibility(int)}: View would like to receive touch events * when hiding the status bar with {@link #SYSTEM_UI_FLAG_FULLSCREEN} and/or hiding the * navigation bar with {@link #SYSTEM_UI_FLAG_HIDE_NAVIGATION} instead of having the system * clear these flags upon interaction. The system may compensate by temporarily overlaying * transparent system ui while also delivering the event. */ public static final int SYSTEM_UI_FLAG_ALLOW_OVERLAY = 0x00000800; /** * @deprecated Use {@link #SYSTEM_UI_FLAG_LOW_PROFILE} instead. */ Loading Loading @@ -2487,11 +2496,23 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * out of the public fields to keep the undefined bits out of the developer's way. * * Flag to specify that the status bar should temporarily overlay underlying content * that is otherwise assuming the status bar is hidden. The status bar will typically * that is otherwise assuming the status bar is hidden. The status bar may * have some degree of transparency while in this temporary overlay mode. */ public static final int STATUS_BAR_OVERLAY = 0x04000000; /** * @hide * * NOTE: This flag may only be used in subtreeSystemUiVisibility. It is masked * out of the public fields to keep the undefined bits out of the developer's way. * * Flag to specify that the navigation bar should temporarily overlay underlying content * that is otherwise assuming the navigation bar is hidden. The navigation bar mayu * have some degree of transparency while in this temporary overlay mode. */ public static final int NAVIGATION_BAR_OVERLAY = 0x08000000; /** * @hide */ Loading packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +8 −0 Original line number Diff line number Diff line Loading @@ -1172,4 +1172,12 @@ public abstract class BaseStatusBar extends SystemUI implements KeyguardManager km = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); return km.inKeyguardRestrictedInputMode(); } public void suspendAutohide() { // hook for subclasses } public void resumeAutohide() { // hook for subclasses } } packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java +9 −3 Original line number Diff line number Diff line Loading @@ -57,8 +57,8 @@ public class DelegateViewHelper { final float sourceX = mTempPoint[0]; final float sourceY = mTempPoint[1]; switch (event.getAction()) { final int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: mPanelShowing = mDelegateView.getVisibility() == View.VISIBLE; mDownPoint[0] = event.getX(); Loading @@ -71,7 +71,7 @@ public class DelegateViewHelper { return false; } if (!mPanelShowing && event.getAction() == MotionEvent.ACTION_MOVE) { if (!mPanelShowing && action == MotionEvent.ACTION_MOVE) { final int historySize = event.getHistorySize(); for (int k = 0; k < historySize + 1; k++) { float x = k < historySize ? event.getHistoricalX(k) : event.getX(); Loading @@ -85,6 +85,12 @@ public class DelegateViewHelper { } } if (action == MotionEvent.ACTION_DOWN) { mBar.suspendAutohide(); } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { mBar.resumeAutohide(); } mDelegateView.getLocationOnScreen(mTempPoint); final float delegateX = mTempPoint[0]; final float delegateY = mTempPoint[1]; Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +31 −15 Original line number Diff line number Diff line Loading @@ -132,6 +132,8 @@ public class PhoneStatusBar extends BaseStatusBar { private static final int NOTIFICATION_PRIORITY_MULTIPLIER = 10; // see NotificationManagerService private static final int HIDE_ICONS_BELOW_SCORE = Notification.PRIORITY_LOW * NOTIFICATION_PRIORITY_MULTIPLIER; private static final int STATUS_OR_NAV_OVERLAY = View.STATUS_BAR_OVERLAY | View.NAVIGATION_BAR_OVERLAY; private static final long AUTOHIDE_TIMEOUT_MS = 3000; private static final float TRANSPARENT_ALPHA = 0.7f; Loading Loading @@ -312,7 +314,7 @@ public class PhoneStatusBar extends BaseStatusBar { private final Runnable mAutohide = new Runnable() { @Override public void run() { int requested = mSystemUiVisibility & ~View.STATUS_BAR_OVERLAY; int requested = mSystemUiVisibility & ~STATUS_OR_NAV_OVERLAY; notifyUiVisibilityChanged(requested); }}; Loading Loading @@ -806,7 +808,7 @@ public class PhoneStatusBar extends BaseStatusBar { | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, PixelFormat.OPAQUE); PixelFormat.TRANSLUCENT); // this will allow the navbar to run in an overlay on devices that support this if (ActivityManager.isHighEndGfx()) { lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; Loading Loading @@ -1682,9 +1684,7 @@ public class PhoneStatusBar extends BaseStatusBar { } // Reschedule suspended auto-hide if necessary if (mAutohideSuspended) { scheduleAutohide(); } resumeAutohide(); } /** Loading Loading @@ -1875,13 +1875,20 @@ public class PhoneStatusBar extends BaseStatusBar { setStatusBarLowProfile(lightsOut); } if (0 != (diff & View.STATUS_BAR_OVERLAY)) { boolean overlay = 0 != (vis & View.STATUS_BAR_OVERLAY); if (overlay) { setTransparent(true); boolean sbOverlayChanged = 0 != (diff & View.STATUS_BAR_OVERLAY); boolean nbOverlayChanged = 0 != (diff & View.NAVIGATION_BAR_OVERLAY); if (sbOverlayChanged || nbOverlayChanged) { boolean sbOverlay = 0 != (vis & View.STATUS_BAR_OVERLAY); boolean nbOverlay = 0 != (vis & View.NAVIGATION_BAR_OVERLAY); if (sbOverlayChanged) { setTransparent(mStatusBarView, sbOverlay); } if (nbOverlayChanged) { setTransparent(mNavigationBarView, nbOverlay); } if (sbOverlayChanged && sbOverlay || nbOverlayChanged && nbOverlay) { scheduleAutohide(); } else { setTransparent(false); cancelAutohide(); } } Loading @@ -1889,9 +1896,17 @@ public class PhoneStatusBar extends BaseStatusBar { } } private void suspendAutohide() { @Override public void resumeAutohide() { if (mAutohideSuspended) { scheduleAutohide(); } } @Override public void suspendAutohide() { mHandler.removeCallbacks(mAutohide); mAutohideSuspended = (0 != (mSystemUiVisibility & View.STATUS_BAR_OVERLAY)); mAutohideSuspended = 0 != (mSystemUiVisibility & STATUS_OR_NAV_OVERLAY); } private void cancelAutohide() { Loading @@ -1904,10 +1919,11 @@ public class PhoneStatusBar extends BaseStatusBar { mHandler.postDelayed(mAutohide, AUTOHIDE_TIMEOUT_MS); } private void setTransparent(boolean transparent) { private void setTransparent(View view, boolean transparent) { float alpha = transparent ? TRANSPARENT_ALPHA : 1; if (DEBUG) Slog.d(TAG, "Setting alpha to " + alpha); mStatusBarView.setAlpha(alpha); if (DEBUG) Slog.d(TAG, "Setting " + (view == mStatusBarView ? "status bar" : view == mNavigationBarView ? "navigation bar" : "view") + " alpha to " + alpha); view.setAlpha(alpha); } private void setStatusBarLowProfile(boolean lightsOut) { Loading Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -26447,6 +26447,7 @@ package android.view { field public static final int SOUND_EFFECTS_ENABLED = 134217728; // 0x8000000 field public static final deprecated int STATUS_BAR_HIDDEN = 1; // 0x1 field public static final deprecated int STATUS_BAR_VISIBLE = 0; // 0x0 field public static final int SYSTEM_UI_FLAG_ALLOW_OVERLAY = 2048; // 0x800 field public static final int SYSTEM_UI_FLAG_FULLSCREEN = 4; // 0x4 field public static final int SYSTEM_UI_FLAG_HIDE_NAVIGATION = 2; // 0x2 field public static final int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN = 1024; // 0x400
core/java/android/view/View.java +22 −1 Original line number Diff line number Diff line Loading @@ -2361,6 +2361,15 @@ public class View implements Drawable.Callback, KeyEvent.Callback, */ public static final int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN = 0x00000400; /** * Flag for {@link #setSystemUiVisibility(int)}: View would like to receive touch events * when hiding the status bar with {@link #SYSTEM_UI_FLAG_FULLSCREEN} and/or hiding the * navigation bar with {@link #SYSTEM_UI_FLAG_HIDE_NAVIGATION} instead of having the system * clear these flags upon interaction. The system may compensate by temporarily overlaying * transparent system ui while also delivering the event. */ public static final int SYSTEM_UI_FLAG_ALLOW_OVERLAY = 0x00000800; /** * @deprecated Use {@link #SYSTEM_UI_FLAG_LOW_PROFILE} instead. */ Loading Loading @@ -2487,11 +2496,23 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * out of the public fields to keep the undefined bits out of the developer's way. * * Flag to specify that the status bar should temporarily overlay underlying content * that is otherwise assuming the status bar is hidden. The status bar will typically * that is otherwise assuming the status bar is hidden. The status bar may * have some degree of transparency while in this temporary overlay mode. */ public static final int STATUS_BAR_OVERLAY = 0x04000000; /** * @hide * * NOTE: This flag may only be used in subtreeSystemUiVisibility. It is masked * out of the public fields to keep the undefined bits out of the developer's way. * * Flag to specify that the navigation bar should temporarily overlay underlying content * that is otherwise assuming the navigation bar is hidden. The navigation bar mayu * have some degree of transparency while in this temporary overlay mode. */ public static final int NAVIGATION_BAR_OVERLAY = 0x08000000; /** * @hide */ Loading
packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +8 −0 Original line number Diff line number Diff line Loading @@ -1172,4 +1172,12 @@ public abstract class BaseStatusBar extends SystemUI implements KeyguardManager km = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); return km.inKeyguardRestrictedInputMode(); } public void suspendAutohide() { // hook for subclasses } public void resumeAutohide() { // hook for subclasses } }
packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java +9 −3 Original line number Diff line number Diff line Loading @@ -57,8 +57,8 @@ public class DelegateViewHelper { final float sourceX = mTempPoint[0]; final float sourceY = mTempPoint[1]; switch (event.getAction()) { final int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: mPanelShowing = mDelegateView.getVisibility() == View.VISIBLE; mDownPoint[0] = event.getX(); Loading @@ -71,7 +71,7 @@ public class DelegateViewHelper { return false; } if (!mPanelShowing && event.getAction() == MotionEvent.ACTION_MOVE) { if (!mPanelShowing && action == MotionEvent.ACTION_MOVE) { final int historySize = event.getHistorySize(); for (int k = 0; k < historySize + 1; k++) { float x = k < historySize ? event.getHistoricalX(k) : event.getX(); Loading @@ -85,6 +85,12 @@ public class DelegateViewHelper { } } if (action == MotionEvent.ACTION_DOWN) { mBar.suspendAutohide(); } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { mBar.resumeAutohide(); } mDelegateView.getLocationOnScreen(mTempPoint); final float delegateX = mTempPoint[0]; final float delegateY = mTempPoint[1]; Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +31 −15 Original line number Diff line number Diff line Loading @@ -132,6 +132,8 @@ public class PhoneStatusBar extends BaseStatusBar { private static final int NOTIFICATION_PRIORITY_MULTIPLIER = 10; // see NotificationManagerService private static final int HIDE_ICONS_BELOW_SCORE = Notification.PRIORITY_LOW * NOTIFICATION_PRIORITY_MULTIPLIER; private static final int STATUS_OR_NAV_OVERLAY = View.STATUS_BAR_OVERLAY | View.NAVIGATION_BAR_OVERLAY; private static final long AUTOHIDE_TIMEOUT_MS = 3000; private static final float TRANSPARENT_ALPHA = 0.7f; Loading Loading @@ -312,7 +314,7 @@ public class PhoneStatusBar extends BaseStatusBar { private final Runnable mAutohide = new Runnable() { @Override public void run() { int requested = mSystemUiVisibility & ~View.STATUS_BAR_OVERLAY; int requested = mSystemUiVisibility & ~STATUS_OR_NAV_OVERLAY; notifyUiVisibilityChanged(requested); }}; Loading Loading @@ -806,7 +808,7 @@ public class PhoneStatusBar extends BaseStatusBar { | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, PixelFormat.OPAQUE); PixelFormat.TRANSLUCENT); // this will allow the navbar to run in an overlay on devices that support this if (ActivityManager.isHighEndGfx()) { lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; Loading Loading @@ -1682,9 +1684,7 @@ public class PhoneStatusBar extends BaseStatusBar { } // Reschedule suspended auto-hide if necessary if (mAutohideSuspended) { scheduleAutohide(); } resumeAutohide(); } /** Loading Loading @@ -1875,13 +1875,20 @@ public class PhoneStatusBar extends BaseStatusBar { setStatusBarLowProfile(lightsOut); } if (0 != (diff & View.STATUS_BAR_OVERLAY)) { boolean overlay = 0 != (vis & View.STATUS_BAR_OVERLAY); if (overlay) { setTransparent(true); boolean sbOverlayChanged = 0 != (diff & View.STATUS_BAR_OVERLAY); boolean nbOverlayChanged = 0 != (diff & View.NAVIGATION_BAR_OVERLAY); if (sbOverlayChanged || nbOverlayChanged) { boolean sbOverlay = 0 != (vis & View.STATUS_BAR_OVERLAY); boolean nbOverlay = 0 != (vis & View.NAVIGATION_BAR_OVERLAY); if (sbOverlayChanged) { setTransparent(mStatusBarView, sbOverlay); } if (nbOverlayChanged) { setTransparent(mNavigationBarView, nbOverlay); } if (sbOverlayChanged && sbOverlay || nbOverlayChanged && nbOverlay) { scheduleAutohide(); } else { setTransparent(false); cancelAutohide(); } } Loading @@ -1889,9 +1896,17 @@ public class PhoneStatusBar extends BaseStatusBar { } } private void suspendAutohide() { @Override public void resumeAutohide() { if (mAutohideSuspended) { scheduleAutohide(); } } @Override public void suspendAutohide() { mHandler.removeCallbacks(mAutohide); mAutohideSuspended = (0 != (mSystemUiVisibility & View.STATUS_BAR_OVERLAY)); mAutohideSuspended = 0 != (mSystemUiVisibility & STATUS_OR_NAV_OVERLAY); } private void cancelAutohide() { Loading @@ -1904,10 +1919,11 @@ public class PhoneStatusBar extends BaseStatusBar { mHandler.postDelayed(mAutohide, AUTOHIDE_TIMEOUT_MS); } private void setTransparent(boolean transparent) { private void setTransparent(View view, boolean transparent) { float alpha = transparent ? TRANSPARENT_ALPHA : 1; if (DEBUG) Slog.d(TAG, "Setting alpha to " + alpha); mStatusBarView.setAlpha(alpha); if (DEBUG) Slog.d(TAG, "Setting " + (view == mStatusBarView ? "status bar" : view == mNavigationBarView ? "navigation bar" : "view") + " alpha to " + alpha); view.setAlpha(alpha); } private void setStatusBarLowProfile(boolean lightsOut) { Loading