diff options
author | John Spurlock <jspurlock@google.com> | 2013-10-03 11:38:39 -0400 |
---|---|---|
committer | John Spurlock <jspurlock@google.com> | 2013-10-06 16:03:53 -0400 |
commit | bd95740648372449a4d5c164d7050eee352d4c24 (patch) | |
tree | af058fb4de4178106804e57868796d2a326afe34 /packages/SystemUI | |
parent | fd65373dd7ba9e613f95dbf87988811c43a11518 (diff) | |
download | frameworks_base-bd95740648372449a4d5c164d7050eee352d4c24.zip frameworks_base-bd95740648372449a4d5c164d7050eee352d4c24.tar.gz frameworks_base-bd95740648372449a4d5c164d7050eee352d4c24.tar.bz2 |
Transparent system ui flags -> Translucent WM flags.
Migrate View.SYSTEM_UI_FLAG_TRANSPARENT_(STATUS/NAVIGATION) to
WindowManager.LayoutParams.FLAG_TRANSLUCENT_(STATUS|NAVIGATION).
Add associated public attrs for both new window flags:
windowTranslucentStatus
windowTranslucentNavigation
Introduce convenient four new themes that set translucent decor:
Theme.Holo.NoActionBar.TranslucentDecor
Theme.Holo.Light.NoActionBar.TranslucentDecor
Theme.DeviceDefault.NoActionBar.TranslucentDecor
Theme.DeviceDefault.Light.NoActionBar.TranslucentDecor
Update PhoneWindowManager mechanism to plumb these values back to
SystemUI to drive bar mode state.
The new translucent flags come from the top fullscreen window, not
the focused window, so translucency does not change when opening
dialogs.
Imply some window-level system-ui visibility if one or both of these
new flags are present, specifically:
FLAG_TRANSLUCENT_STATUS implies LAYOUT_STABLE, LAYOUT_FULLSCREEN
FLAG_TRANSLUCENT_NAVIGATION implies LAYOUT STABLE, LAYOUT_HIDE_NAV
Rename all associated variable & resource names to use the term
translucent instead of transparent. (Retain the term semi-transparent
for the transient bar style).
Recents activity allowed to inherit translucent decor state via the
new PRIVATE_FLAG_INHERIT_TRANSLUCENT_DECOR. Compensating changes
to use the full screen area more appropriately.
Update keyguard to use new WM flags.
Update docs and various api artifacts.
Sanity-check fixes:
- Toasts and alerts given stable layout.
- Suppress nu-gradient when in transient (hidey) mode.
- New translucent flags use top-fullscreen window, dialogs don't clear.
Bug:10674960
Bug:11062108
Bug:10987178
Bug:10786445
Bug:10781433
Change-Id: If667a55bea4cf5e008549524b9899197fab55ebe
Diffstat (limited to 'packages/SystemUI')
7 files changed, 29 insertions, 27 deletions
diff --git a/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml b/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml index b06166d..b2ba25a 100644 --- a/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml +++ b/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml @@ -41,15 +41,15 @@ android:fadingEdge="horizontal" android:scrollbars="none" android:layout_gravity="right" - android:fadingEdgeLength="@dimen/status_bar_recents_scroll_fading_edge_length" - android:fitsSystemWindows="true"> + android:fadingEdgeLength="@dimen/status_bar_recents_scroll_fading_edge_length"> <LinearLayout android:id="@+id/recents_linear_layout" android:layout_width="wrap_content" android:layout_height="match_parent" android:layoutDirection="ltr" android:layout_gravity="left" - android:orientation="horizontal"> + android:orientation="horizontal" + android:fitsSystemWindows="true"> </LinearLayout> </com.android.systemui.recent.RecentsHorizontalScrollView> diff --git a/packages/SystemUI/res/layout/status_bar_recent_panel.xml b/packages/SystemUI/res/layout/status_bar_recent_panel.xml index 305aaf2..e41475b 100644 --- a/packages/SystemUI/res/layout/status_bar_recent_panel.xml +++ b/packages/SystemUI/res/layout/status_bar_recent_panel.xml @@ -45,13 +45,13 @@ android:fadingEdgeLength="@dimen/status_bar_recents_scroll_fading_edge_length" android:layout_gravity="bottom|start" android:clipToPadding="false" - android:clipChildren="false" - android:fitsSystemWindows="true"> + android:clipChildren="false"> <LinearLayout android:id="@+id/recents_linear_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" + android:fitsSystemWindows="true" android:clipToPadding="false" android:clipChildren="false"> </LinearLayout> diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java index 818c2980..09a7a5e 100644 --- a/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java @@ -177,10 +177,14 @@ public class RecentsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { + getWindow().addPrivateFlags( + WindowManager.LayoutParams.PRIVATE_FLAG_INHERIT_TRANSLUCENT_DECOR); setContentView(R.layout.status_bar_recent_panel); mRecentsPanel = (RecentsPanelView) findViewById(R.id.recents_root); mRecentsPanel.setOnTouchListener(new TouchOutsideListener(mRecentsPanel)); - mRecentsPanel.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + mRecentsPanel.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); final RecentTasksLoader recentTasksLoader = RecentTasksLoader.getInstance(this); recentTasksLoader.setRecentsPanel(mRecentsPanel, mRecentsPanel); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java index ce578e5..7b1df91 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java @@ -35,7 +35,7 @@ public class BarTransitions { public static final int MODE_OPAQUE = 0; public static final int MODE_SEMI_TRANSPARENT = 1; - public static final int MODE_TRANSPARENT = 2; + public static final int MODE_TRANSLUCENT = 2; public static final int MODE_LIGHTS_OUT = 3; public static final int LIGHTS_IN_DURATION = 250; @@ -125,7 +125,7 @@ public class BarTransitions { mColorDrawable.setColor(newColor); } } - if (oldColor != null && newColor == null && mColorDrawableShowing) { + if (newColor == null && mColorDrawableShowing) { if (DEBUG) Log.d(mTag, "Hide color layer"); if (animate) { mTransitionDrawable.reverseTransition(BACKGROUND_DURATION); @@ -133,9 +133,8 @@ public class BarTransitions { mTransitionDrawable.resetTransition(); } mColorDrawableShowing = false; - } else if (oldColor == null && newColor != null && !mColorDrawableShowing) { + } else if (newColor != null && !mColorDrawableShowing) { if (DEBUG) Log.d(mTag, "Show color layer"); - mTransitionDrawable.setCrossFadeEnabled(!animate); mTransitionDrawable.startTransition(animate ? BACKGROUND_DURATION : 0); mColorDrawableShowing = true; } @@ -158,7 +157,7 @@ public class BarTransitions { public static String modeToString(int mode) { if (mode == MODE_OPAQUE) return "MODE_OPAQUE"; if (mode == MODE_SEMI_TRANSPARENT) return "MODE_SEMI_TRANSPARENT"; - if (mode == MODE_TRANSPARENT) return "MODE_TRANSPARENT"; + if (mode == MODE_TRANSLUCENT) return "MODE_TRANSLUCENT"; if (mode == MODE_LIGHTS_OUT) return "MODE_LIGHTS_OUT"; throw new IllegalArgumentException("Unknown mode " + mode); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java index 4e92179..5d4b995 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java @@ -58,8 +58,8 @@ public final class NavigationBarTransitions extends BarTransitions { @Override public void transitionTo(int mode, boolean animate) { mRequestedMode = mode; - if (mVertical && mode == MODE_TRANSPARENT) { - // fully transparent mode not allowed when vertical + if (mVertical && mode == MODE_TRANSLUCENT) { + // translucent mode not allowed when vertical mode = MODE_OPAQUE; } super.transitionTo(mode, animate); 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 c47d0eb..93a9b92 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -22,7 +22,7 @@ import static android.app.StatusBarManager.WINDOW_STATE_SHOWING; 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_SEMI_TRANSPARENT; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT; +import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSLUCENT; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT; import android.animation.Animator; @@ -1853,12 +1853,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { // update status bar mode final int sbMode = computeBarMode(oldVal, newVal, mStatusBarView.getBarTransitions(), - View.STATUS_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS); + View.STATUS_BAR_TRANSIENT, View.STATUS_BAR_TRANSLUCENT); // update navigation bar mode final int nbMode = mNavigationBarView == null ? -1 : computeBarMode( oldVal, newVal, mNavigationBarView.getBarTransitions(), - View.NAVIGATION_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION); + View.NAVIGATION_BAR_TRANSIENT, View.NAVIGATION_BAR_TRANSLUCENT); final boolean sbModeChanged = sbMode != -1; final boolean nbModeChanged = nbMode != -1; boolean checkBarModes = false; @@ -1896,18 +1896,18 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { } private int computeBarMode(int oldVis, int newVis, BarTransitions transitions, - int transientFlag, int transparentFlag) { - final int oldMode = barMode(oldVis, transientFlag, transparentFlag); - final int newMode = barMode(newVis, transientFlag, transparentFlag); + int transientFlag, int translucentFlag) { + final int oldMode = barMode(oldVis, transientFlag, translucentFlag); + final int newMode = barMode(newVis, transientFlag, translucentFlag); if (oldMode == newMode) { return -1; // no mode change } return newMode; } - private int barMode(int vis, int transientFlag, int transparentFlag) { + private int barMode(int vis, int transientFlag, int translucentFlag) { return (vis & transientFlag) != 0 ? MODE_SEMI_TRANSPARENT - : (vis & transparentFlag) != 0 ? MODE_TRANSPARENT + : (vis & translucentFlag) != 0 ? MODE_TRANSLUCENT : (vis & View.SYSTEM_UI_FLAG_LOW_PROFILE) != 0 ? MODE_LIGHTS_OUT : MODE_OPAQUE; } @@ -2737,7 +2737,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { if (command.equals(COMMAND_BARS)) { String mode = args.getString("mode"); int barMode = "opaque".equals(mode) ? MODE_OPAQUE : - "transparent".equals(mode) ? MODE_TRANSPARENT : + "translucent".equals(mode) ? MODE_TRANSLUCENT : "semi-transparent".equals(mode) ? MODE_SEMI_TRANSPARENT : -1; if (barMode != -1) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java index 6bb6776..8406565 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java @@ -20,13 +20,12 @@ import android.animation.Animator; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.content.res.Resources; -import android.graphics.drawable.GradientDrawable.Orientation; import android.view.View; import com.android.systemui.R; public final class PhoneStatusBarTransitions extends BarTransitions { - private static final float ICON_ALPHA_WHEN_TRANSPARENT = 1; + private static final float ICON_ALPHA_WHEN_NOT_OPAQUE = 1; private static final float ICON_ALPHA_WHEN_LIGHTS_OUT_BATTERY_CLOCK = 0.5f; private static final float ICON_ALPHA_WHEN_LIGHTS_OUT_NON_BATTERY_CLOCK = 0; @@ -59,7 +58,7 @@ public final class PhoneStatusBarTransitions extends BarTransitions { private float getNonBatteryClockAlphaFor(int mode) { return mode == MODE_LIGHTS_OUT ? ICON_ALPHA_WHEN_LIGHTS_OUT_NON_BATTERY_CLOCK - : isTransparent(mode) ? ICON_ALPHA_WHEN_TRANSPARENT + : !isOpaque(mode) ? ICON_ALPHA_WHEN_NOT_OPAQUE : mIconAlphaWhenOpaque; } @@ -68,8 +67,8 @@ public final class PhoneStatusBarTransitions extends BarTransitions { : getNonBatteryClockAlphaFor(mode); } - private boolean isTransparent(int mode) { - return mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSPARENT; + private boolean isOpaque(int mode) { + return !(mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSLUCENT); } @Override |