summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorJohn Spurlock <jspurlock@google.com>2013-10-03 11:38:39 -0400
committerJohn Spurlock <jspurlock@google.com>2013-10-06 16:03:53 -0400
commitbd95740648372449a4d5c164d7050eee352d4c24 (patch)
treeaf058fb4de4178106804e57868796d2a326afe34 /packages
parentfd65373dd7ba9e613f95dbf87988811c43a11518 (diff)
downloadframeworks_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')
-rw-r--r--packages/Keyguard/res/values/alias.xml4
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java10
-rw-r--r--packages/Keyguard/src/com/android/keyguard/MultiPaneChallengeLayout.java2
-rw-r--r--packages/Keyguard/src/com/android/keyguard/SlidingChallengeLayout.java2
-rw-r--r--packages/SystemUI/res/layout-land/status_bar_recent_panel.xml6
-rw-r--r--packages/SystemUI/res/layout/status_bar_recent_panel.xml4
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java9
11 files changed, 38 insertions, 36 deletions
diff --git a/packages/Keyguard/res/values/alias.xml b/packages/Keyguard/res/values/alias.xml
index b22311e..e6657a1 100644
--- a/packages/Keyguard/res/values/alias.xml
+++ b/packages/Keyguard/res/values/alias.xml
@@ -43,8 +43,8 @@
<!-- Alias used to reference framework configuration for screen rotation. -->
<item type="bool" name="config_enableLockScreenRotation">@*android:bool/config_enableLockScreenRotation</item>
- <!-- Alias used to reference framework configuration for transparent bars. -->
- <item type="bool" name="config_enableLockScreenTransparentBars">@*android:bool/config_enableLockScreenTransparentBars</item>
+ <!-- Alias used to reference framework configuration for translucent decor. -->
+ <item type="bool" name="config_enableLockScreenTranslucentDecor">@*android:bool/config_enableLockScreenTranslucentDecor</item>
<!-- Alias used to reference framework activity duration. -->
<item type="integer" name="config_activityDefaultDur">@*android:integer/config_activityDefaultDur</item>
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java b/packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java
index 2084a16..6584180 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java
@@ -124,9 +124,9 @@ public class KeyguardViewManager {
// activities. Other disabled bits are handled by the KeyguardViewMediator talking
// directly to the status bar service.
int visFlags = View.STATUS_BAR_DISABLE_HOME;
- if (shouldEnableTransparentBars()) {
- visFlags |= View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS
- | View.SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION;
+ if (shouldEnableTranslucentDecor()) {
+ mWindowLayoutParams.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
+ | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
}
if (DEBUG) Log.v(TAG, "show:setSystemUiVisibility(" + Integer.toHexString(visFlags)+")");
mKeyguardHost.setSystemUiVisibility(visFlags);
@@ -143,9 +143,9 @@ public class KeyguardViewManager {
|| res.getBoolean(R.bool.config_enableLockScreenRotation);
}
- private boolean shouldEnableTransparentBars() {
+ private boolean shouldEnableTranslucentDecor() {
Resources res = mContext.getResources();
- return res.getBoolean(R.bool.config_enableLockScreenTransparentBars);
+ return res.getBoolean(R.bool.config_enableLockScreenTranslucentDecor);
}
class ViewManagerHost extends FrameLayout {
diff --git a/packages/Keyguard/src/com/android/keyguard/MultiPaneChallengeLayout.java b/packages/Keyguard/src/com/android/keyguard/MultiPaneChallengeLayout.java
index 67d0d5a..528f988 100644
--- a/packages/Keyguard/src/com/android/keyguard/MultiPaneChallengeLayout.java
+++ b/packages/Keyguard/src/com/android/keyguard/MultiPaneChallengeLayout.java
@@ -79,7 +79,7 @@ public class MultiPaneChallengeLayout extends ViewGroup implements ChallengeLayo
final Resources res = getResources();
mDisplayMetrics = res.getDisplayMetrics();
- setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_STABLE);
+ setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_STABLE | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
}
public void setInsets(Rect insets) {
diff --git a/packages/Keyguard/src/com/android/keyguard/SlidingChallengeLayout.java b/packages/Keyguard/src/com/android/keyguard/SlidingChallengeLayout.java
index 9718c9b..4f377a3 100644
--- a/packages/Keyguard/src/com/android/keyguard/SlidingChallengeLayout.java
+++ b/packages/Keyguard/src/com/android/keyguard/SlidingChallengeLayout.java
@@ -260,7 +260,7 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout
mChallengeBottomBound = res.getDimensionPixelSize(R.dimen.kg_widget_pager_bottom_padding);
setWillNotDraw(false);
- setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_STABLE);
+ setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_STABLE | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
}
public void setInsets(Rect insets) {
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