diff options
author | Filip Gruszczynski <gruszczy@google.com> | 2015-02-25 18:52:02 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-02-25 18:52:02 +0000 |
commit | 924a18baa254a5f73e8e38b5730b1acd1e7faf19 (patch) | |
tree | df7f3478c195820b8bf2b322f296078e3f5bdb01 | |
parent | 74160d8cdb2d6d63ebb9c904cb6b83271d96555c (diff) | |
parent | cf8c112ed87752d79a869de9426b5c5a950b5c43 (diff) | |
download | frameworks_base-924a18baa254a5f73e8e38b5730b1acd1e7faf19.zip frameworks_base-924a18baa254a5f73e8e38b5730b1acd1e7faf19.tar.gz frameworks_base-924a18baa254a5f73e8e38b5730b1acd1e7faf19.tar.bz2 |
am cf8c112e: am 01dd0e86: Merge "Force translucency from windowIsTranslucent on SwipeDismissLayout." into lmp-mr1-modular-dev
* commit 'cf8c112ed87752d79a869de9426b5c5a950b5c43':
Force translucency from windowIsTranslucent on SwipeDismissLayout.
-rw-r--r-- | core/java/android/view/PhoneWindow.java | 6 | ||||
-rw-r--r-- | core/java/com/android/internal/widget/SwipeDismissLayout.java | 13 | ||||
-rw-r--r-- | core/res/res/values/attrs.xml | 8 | ||||
-rw-r--r-- | core/res/res/values/themes_micro.xml | 6 | ||||
-rwxr-xr-x | services/core/java/com/android/server/am/ActivityRecord.java | 10 | ||||
-rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 9 |
6 files changed, 31 insertions, 21 deletions
diff --git a/core/java/android/view/PhoneWindow.java b/core/java/android/view/PhoneWindow.java index 54a0025..2a25fd2 100644 --- a/core/java/android/view/PhoneWindow.java +++ b/core/java/android/view/PhoneWindow.java @@ -4171,12 +4171,6 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { return mMediaController; } - private boolean isTranslucent() { - TypedArray a = getWindowStyle(); - return a.getBoolean(a.getResourceId( - R.styleable.Window_windowIsTranslucent, 0), false); - } - @Override public void setEnterTransition(Transition enterTransition) { mEnterTransition = enterTransition; diff --git a/core/java/com/android/internal/widget/SwipeDismissLayout.java b/core/java/com/android/internal/widget/SwipeDismissLayout.java index d617c05..89990c2 100644 --- a/core/java/com/android/internal/widget/SwipeDismissLayout.java +++ b/core/java/com/android/internal/widget/SwipeDismissLayout.java @@ -19,6 +19,7 @@ package com.android.internal.widget; import android.animation.TimeInterpolator; import android.app.Activity; import android.content.Context; +import android.content.res.TypedArray; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; @@ -38,6 +39,7 @@ public class SwipeDismissLayout extends FrameLayout { private static final String TAG = "SwipeDismissLayout"; private static final float DISMISS_MIN_DRAG_WIDTH_RATIO = .33f; + private boolean mUseDynamicTranslucency = true; public interface OnDismissedListener { void onDismissed(SwipeDismissLayout layout); @@ -85,7 +87,7 @@ public class SwipeDismissLayout extends FrameLayout { // and temporarily disables translucency when it is fully visible. // As soon as the user starts swiping, we will re-enable // translucency. - if (getContext() instanceof Activity) { + if (mUseDynamicTranslucency && getContext() instanceof Activity) { ((Activity) getContext()).convertFromTranslucent(); } } @@ -117,6 +119,11 @@ public class SwipeDismissLayout extends FrameLayout { android.R.integer.config_shortAnimTime); mCancelInterpolator = new DecelerateInterpolator(1.5f); mDismissInterpolator = new AccelerateInterpolator(1.5f); + TypedArray a = context.getTheme().obtainStyledAttributes( + com.android.internal.R.styleable.Theme); + mUseDynamicTranslucency = !a.hasValue( + com.android.internal.R.styleable.Window_windowIsTranslucent); + a.recycle(); } public void setOnDismissedListener(OnDismissedListener listener) { @@ -230,7 +237,7 @@ public class SwipeDismissLayout extends FrameLayout { mLastX = ev.getRawX(); updateSwiping(ev); if (mSwiping) { - if (getContext() instanceof Activity) { + if (mUseDynamicTranslucency && getContext() instanceof Activity) { ((Activity) getContext()).convertToTranslucent(null, null); } setProgress(ev.getRawX() - mDownX); @@ -254,7 +261,7 @@ public class SwipeDismissLayout extends FrameLayout { } protected void cancel() { - if (getContext() instanceof Activity) { + if (mUseDynamicTranslucency && getContext() instanceof Activity) { ((Activity) getContext()).convertFromTranslucent(); } if (mProgressListener != null) { diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 6bb61a2..09103e3 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -329,7 +329,9 @@ <attr name="windowOverscan" format="boolean" /> <!-- Flag indicating whether this is a floating window. --> <attr name="windowIsFloating" format="boolean" /> - <!-- Flag indicating whether this is a translucent window. --> + <!-- Flag indicating whether this is a translucent window. If this attribute is unset (but + not if set to false), the window might still be considered translucent, if + windowSwipeToDismiss is set to true. --> <attr name="windowIsTranslucent" format="boolean" /> <!-- Flag indicating that this window's background should be the user's current wallpaper. Corresponds @@ -455,7 +457,9 @@ <attr name="windowTranslucentNavigation" format="boolean" /> <!-- Flag to indicate that a window can be swiped away to be dismissed. - Corresponds to {@link android.view.Window#FEATURE_SWIPE_TO_DISMISS} --> + Corresponds to {@link android.view.Window#FEATURE_SWIPE_TO_DISMISS}. It will also + dynamically change translucency of the window, if the windowIsTranslucent is not set. + If windowIsTranslucent is set (to either true or false) it will obey that setting. --> <attr name="windowSwipeToDismiss" format="boolean" /> <!-- Flag indicating whether this window requests that content changes be performed diff --git a/core/res/res/values/themes_micro.xml b/core/res/res/values/themes_micro.xml index 1ebc708..e730dff 100644 --- a/core/res/res/values/themes_micro.xml +++ b/core/res/res/values/themes_micro.xml @@ -24,9 +24,6 @@ <item name="windowBackground">@color/black</item> <item name="windowContentOverlay">@null</item> <item name="windowIsFloating">false</item> - <!-- We need the windows to be translucent for SwipeToDismiss layout - to work properly. --> - <item name="windowIsTranslucent">true</item> <item name="windowSwipeToDismiss">true</item> <!-- Required to force windowInsets dispatch through application UI. --> <item name="windowOverscan">true</item> @@ -42,9 +39,6 @@ <item name="windowBackground">@color/white</item> <item name="windowContentOverlay">@null</item> <item name="windowIsFloating">false</item> - <!-- We need the windows to be translucent for SwipeToDismiss layout - to work properly. --> - <item name="windowIsTranslucent">true</item> <item name="windowSwipeToDismiss">true</item> <!-- Required to force windowInsets dispatch through application UI. --> <item name="windowOverscan">true</item> diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index c0d2502..0cbc9d7 100755 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -479,10 +479,16 @@ final class ActivityRecord { AttributeCache.Entry ent = AttributeCache.instance().get(packageName, realTheme, com.android.internal.R.styleable.Window, userId); + final boolean translucent = ent.array.getBoolean( + com.android.internal.R.styleable.Window_windowIsTranslucent, false) + || (!ent.array.hasValue( + com.android.internal.R.styleable.Window_windowIsTranslucent) + && ent.array.getBoolean( + com.android.internal.R.styleable.Window_windowSwipeToDismiss, + false)); fullscreen = ent != null && !ent.array.getBoolean( com.android.internal.R.styleable.Window_windowIsFloating, false) - && !ent.array.getBoolean( - com.android.internal.R.styleable.Window_windowIsTranslucent, false); + && !translucent; noDisplay = ent != null && ent.array.getBoolean( com.android.internal.R.styleable.Window_windowNoDisplay, false); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index fde0bd5..7e69e87 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -4316,8 +4316,13 @@ public class WindowManagerService extends IWindowManager.Stub + " ShowWallpaper=" + ent.array.getBoolean( com.android.internal.R.styleable.Window_windowShowWallpaper, false)); - if (ent.array.getBoolean( - com.android.internal.R.styleable.Window_windowIsTranslucent, false)) { + final boolean windowIsTranslucentDefined = ent.array.hasValue( + com.android.internal.R.styleable.Window_windowIsTranslucent); + final boolean windowIsTranslucent = ent.array.getBoolean( + com.android.internal.R.styleable.Window_windowIsTranslucent, false); + final boolean windowSwipeToDismiss = ent.array.getBoolean( + com.android.internal.R.styleable.Window_windowSwipeToDismiss, false); + if (windowIsTranslucent || (!windowIsTranslucentDefined && windowSwipeToDismiss)) { return; } if (ent.array.getBoolean( |