diff --git a/api/current.txt b/api/current.txt index b06951fd9c56e..82aad7993f212 100644 --- a/api/current.txt +++ b/api/current.txt @@ -1429,6 +1429,7 @@ package android { field public static final int windowActionBar = 16843469; // 0x10102cd field public static final int windowActionBarOverlay = 16843492; // 0x10102e4 field public static final int windowActionModeOverlay = 16843485; // 0x10102dd + field public static final int windowActivityTransitions = 16843982; // 0x10104ce field public static final int windowAllowEnterTransitionOverlap = 16843836; // 0x101043c field public static final int windowAllowReturnTransitionOverlap = 16843835; // 0x101043b field public static final int windowAnimationStyle = 16842926; // 0x10100ae @@ -34878,6 +34879,7 @@ package android.view { field public static final int FEATURE_ACTION_BAR = 8; // 0x8 field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9 field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa + field public static final int FEATURE_ACTIVITY_TRANSITIONS = 13; // 0xd field public static final int FEATURE_CONTENT_TRANSITIONS = 12; // 0xc field public static final int FEATURE_CONTEXT_MENU = 6; // 0x6 field public static final int FEATURE_CUSTOM_TITLE = 7; // 0x7 diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 89a9692fb2c7f..701ab1d809dcd 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -4756,7 +4756,7 @@ public class Activity extends ContextThemeWrapper * Activity through a returning activity transition, giving you the resultCode * and any additional data from it. This method will only be called if the activity * set a result code other than {@link #RESULT_CANCELED} and it supports activity - * transitions with {@link Window#FEATURE_CONTENT_TRANSITIONS}. + * transitions with {@link Window#FEATURE_ACTIVITY_TRANSITIONS}. * *

The purpose of this function is to let the called Activity send a hint about * its state so that this underlying Activity can prepare to be exposed. A call to @@ -5781,7 +5781,7 @@ public class Activity extends ContextThemeWrapper * When {@link android.app.ActivityOptions#makeSceneTransitionAnimation(Activity, * android.view.View, String)} was used to start an Activity, callback * will be called to handle shared elements on the launched Activity. This requires - * {@link Window#FEATURE_CONTENT_TRANSITIONS}. + * {@link Window#FEATURE_ACTIVITY_TRANSITIONS}. * * @param callback Used to manipulate shared element transitions on the launched Activity. */ @@ -5797,7 +5797,7 @@ public class Activity extends ContextThemeWrapper * android.view.View, String)} was used to start an Activity, callback * will be called to handle shared elements on the launching Activity. Most * calls will only come when returning from the started Activity. - * This requires {@link Window#FEATURE_CONTENT_TRANSITIONS}. + * This requires {@link Window#FEATURE_ACTIVITY_TRANSITIONS}. * * @param callback Used to manipulate shared element transitions on the launching Activity. */ diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java index 213c7f6eff6dc..cd6a4f51bf906 100644 --- a/core/java/android/app/ActivityOptions.java +++ b/core/java/android/app/ActivityOptions.java @@ -414,7 +414,7 @@ public class ActivityOptions { * exit Transition. The position of the shared element in the launched Activity will be the * epicenter of its entering Transition. * - *

This requires {@link android.view.Window#FEATURE_CONTENT_TRANSITIONS} to be + *

This requires {@link android.view.Window#FEATURE_ACTIVITY_TRANSITIONS} to be * enabled on the calling Activity to cause an exit transition. The same must be in * the called Activity to get an entering transition.

* @param activity The Activity whose window contains the shared elements. @@ -438,7 +438,7 @@ public class ActivityOptions { * will be used as the epicenter for the exit Transition. The position of the associated * shared element in the launched Activity will be the epicenter of its entering Transition. * - *

This requires {@link android.view.Window#FEATURE_CONTENT_TRANSITIONS} to be + *

This requires {@link android.view.Window#FEATURE_ACTIVITY_TRANSITIONS} to be * enabled on the calling Activity to cause an exit transition. The same must be in * the called Activity to get an entering transition.

* @param activity The Activity whose window contains the shared elements. @@ -453,7 +453,7 @@ public class ActivityOptions { public static ActivityOptions makeSceneTransitionAnimation(Activity activity, Pair... sharedElements) { ActivityOptions opts = new ActivityOptions(); - if (!activity.getWindow().hasFeature(Window.FEATURE_CONTENT_TRANSITIONS)) { + if (!activity.getWindow().hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)) { opts.mAnimationType = ANIM_DEFAULT; return opts; } diff --git a/core/java/android/app/ActivityTransitionState.java b/core/java/android/app/ActivityTransitionState.java index ad4a22bb7a574..bc2e6ca5f57f3 100644 --- a/core/java/android/app/ActivityTransitionState.java +++ b/core/java/android/app/ActivityTransitionState.java @@ -144,7 +144,7 @@ class ActivityTransitionState { } public void setEnterActivityOptions(Activity activity, ActivityOptions options) { - if (activity.getWindow().hasFeature(Window.FEATURE_CONTENT_TRANSITIONS) + if (activity.getWindow().hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS) && options != null && mEnterActivityOptions == null && mEnterTransitionCoordinator == null && options.getAnimationType() == ActivityOptions.ANIM_SCENE_TRANSITION) { @@ -272,7 +272,7 @@ class ActivityTransitionState { } public void startExitOutTransition(Activity activity, Bundle options) { - if (!activity.getWindow().hasFeature(Window.FEATURE_CONTENT_TRANSITIONS)) { + if (!activity.getWindow().hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)) { return; } ActivityOptions activityOptions = new ActivityOptions(options); diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java index ebc683abe0b77..63ab7d252237c 100644 --- a/core/java/android/view/Window.java +++ b/core/java/android/view/Window.java @@ -110,11 +110,20 @@ public abstract class Window { */ public static final int FEATURE_CONTENT_TRANSITIONS = 12; + /** + * Enables Activities to run Activity Transitions either through sending or receiving + * ActivityOptions bundle created with + * {@link android.app.ActivityOptions#makeSceneTransitionAnimation(android.app.Activity, + * android.util.Pair[])} or {@link android.app.ActivityOptions#makeSceneTransitionAnimation( + * android.app.Activity, View, String)}. + */ + public static final int FEATURE_ACTIVITY_TRANSITIONS = 13; + /** * Max value used as a feature ID * @hide */ - public static final int FEATURE_MAX = FEATURE_CONTENT_TRANSITIONS; + public static final int FEATURE_MAX = FEATURE_ACTIVITY_TRANSITIONS; /** Flag for setting the progress bar's visibility to VISIBLE */ public static final int PROGRESS_VISIBILITY_ON = -1; @@ -1459,7 +1468,7 @@ public abstract class Window { * have {@link ViewGroup#isTransitionGroup} return true. Typical Transitions will extend * {@link android.transition.Visibility} as exiting is governed by changing visibility * from {@link View#VISIBLE} to {@link View#INVISIBLE}. If transition is null, the views will - * remain unaffected. Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * remain unaffected. Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @param transition The Transition to use to move Views out of the scene when calling a * new Activity. @@ -1475,7 +1484,7 @@ public abstract class Window { * visibility from {@link View#VISIBLE} to {@link View#INVISIBLE}. If transition is null, * the views will remain unaffected. If nothing is set, the default will be to use the same * transition as {@link #setExitTransition(android.transition.Transition)}. - * Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @param transition The Transition to use to move Views into the scene when reentering from a * previously-started Activity. @@ -1489,7 +1498,7 @@ public abstract class Window { * {@link ViewGroup#isTransitionGroup} return true. Typical Transitions will extend * {@link android.transition.Visibility} as entering is governed by changing visibility from * {@link View#INVISIBLE} to {@link View#VISIBLE}. If transition is null, - * entering Views will remain unaffected. Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * entering Views will remain unaffected. Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @return the Transition to use to move Views into the initial Scene. * @attr ref android.R.styleable#Window_windowEnterTransition @@ -1517,7 +1526,7 @@ public abstract class Window { * have {@link ViewGroup#isTransitionGroup} return true. Typical Transitions will extend * {@link android.transition.Visibility} as exiting is governed by changing visibility * from {@link View#VISIBLE} to {@link View#INVISIBLE}. If transition is null, the views will - * remain unaffected. Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * remain unaffected. Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @return the Transition to use to move Views out of the scene when calling a * new Activity. @@ -1531,7 +1540,7 @@ public abstract class Window { * or ViewGroups that have {@link ViewGroup#isTransitionGroup} return true. Typical Transitions * will extend {@link android.transition.Visibility} as exiting is governed by changing * visibility from {@link View#VISIBLE} to {@link View#INVISIBLE}. - * Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @return The Transition to use to move Views into the scene when reentering from a * previously-started Activity. @@ -1544,7 +1553,7 @@ public abstract class Window { * Scene. Typical Transitions will affect size and location, such as * {@link android.transition.ChangeBounds}. A null * value will cause transferred shared elements to blink to the final position. - * Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @param transition The Transition to use for shared elements transferred into the content * Scene. @@ -1559,7 +1568,7 @@ public abstract class Window { * value will cause transferred shared elements to blink to the final position. * If no value is set, the default will be to use the same value as * {@link #setSharedElementEnterTransition(android.transition.Transition)}. - * Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @param transition The Transition to use for shared elements transferred out of the content * Scene. @@ -1569,7 +1578,7 @@ public abstract class Window { /** * Returns the Transition that will be used for shared elements transferred into the content - * Scene. Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * Scene. Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @return Transition to use for sharend elements transferred into the content Scene. * @attr ref android.R.styleable#Window_windowSharedElementEnterTransition @@ -1578,7 +1587,7 @@ public abstract class Window { /** * Returns the Transition that will be used for shared elements transferred back to a - * calling Activity. Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * calling Activity. Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @return Transition to use for sharend elements transferred into the content Scene. * @attr ref android.R.styleable#Window_windowSharedElementReturnTransition @@ -1590,7 +1599,7 @@ public abstract class Window { * before the shared elements are transferred to the called Activity. If the shared elements * must animate during the exit transition, this Transition should be used. Upon completion, * the shared elements may be transferred to the started Activity. - * Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @param transition The Transition to use for shared elements in the launching Window * prior to transferring to the launched Activity's Window. @@ -1603,7 +1612,7 @@ public abstract class Window { * Activity after it has returned the shared element to it start location. If no value * is set, this will default to * {@link #setSharedElementExitTransition(android.transition.Transition)}. - * Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @param transition The Transition to use for shared elements in the launching Window * after the shared element has returned to the Window. @@ -1614,7 +1623,7 @@ public abstract class Window { /** * Returns the Transition to use for shared elements in the launching Window prior * to transferring to the launched Activity's Window. - * Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @return the Transition to use for shared elements in the launching Window prior * to transferring to the launched Activity's Window. @@ -1625,7 +1634,7 @@ public abstract class Window { /** * Returns the Transition that will be used for shared elements reentering from a started * Activity after it has returned the shared element to it start location. - * Requires {@link #FEATURE_CONTENT_TRANSITIONS}. + * Requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. * * @return the Transition that will be used for shared elements reentering from a started * Activity after it has returned the shared element to it start location. @@ -1703,7 +1712,7 @@ public abstract class Window { * Returns the duration, in milliseconds, of the window background fade * when transitioning into or away from an Activity when called with an Activity Transition. *

When executing the enter transition, the background starts transparent - * and fades in. This requires {@link #FEATURE_CONTENT_TRANSITIONS}. The default is + * and fades in. This requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. The default is * 300 milliseconds.

* * @return The duration of the window background fade to opaque during enter transition. @@ -1716,7 +1725,7 @@ public abstract class Window { * Sets the duration, in milliseconds, of the window background fade * when transitioning into or away from an Activity when called with an Activity Transition. *

When executing the enter transition, the background starts transparent - * and fades in. This requires {@link #FEATURE_CONTENT_TRANSITIONS}. The default is + * and fades in. This requires {@link #FEATURE_ACTIVITY_TRANSITIONS}. The default is * 300 milliseconds.

* * @param fadeDurationMillis The duration of the window background fade to or from opaque diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 13b1dd920bd78..438d1fb04cbb1 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -458,6 +458,10 @@ transitions between different window content. --> + + + @@ -1792,6 +1796,7 @@ + diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 38b1e130377df..7e3a6fafc4417 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2293,6 +2293,7 @@ + diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml index 48de5adf552cb..d0097aacf7f3d 100644 --- a/core/res/res/values/themes.xml +++ b/core/res/res/values/themes.xml @@ -192,6 +192,7 @@ please see themes_device_defaults.xml. @color/black @layout/screen_action_bar false + false @@ -816,6 +817,7 @@ please see themes_device_defaults.xml. @@ -827,6 +829,7 @@ please see themes_device_defaults.xml. @color/secondary_text_nofocus false false + false @@ -836,6 +839,7 @@ please see themes_device_defaults.xml. false false false + false diff --git a/core/res/res/values/themes_leanback.xml b/core/res/res/values/themes_leanback.xml index 720733f4eab0b..82cf288f46291 100644 --- a/core/res/res/values/themes_leanback.xml +++ b/core/res/res/values/themes_leanback.xml @@ -76,6 +76,7 @@ diff --git a/core/res/res/values/themes_material.xml b/core/res/res/values/themes_material.xml index 485ea0834fa45..008e1700d215c 100644 --- a/core/res/res/values/themes_material.xml +++ b/core/res/res/values/themes_material.xml @@ -157,7 +157,8 @@ please see themes_device_defaults.xml. @style/WindowTitle.Material @dimen/action_bar_default_height_material @style/WindowTitleBackground.Material - true + false + true @style/Animation.Material.Activity stateUnspecified|adjustUnspecified true @@ -511,7 +512,8 @@ please see themes_device_defaults.xml. @transition/fade @transition/move @transition/move - true + false + true @style/Theme.Material.Light.Dialog diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index cce30c7fecc75..f802e1eeb23b5 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -124,6 +124,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { private static final int CUSTOM_TITLE_COMPATIBLE_FEATURES = DEFAULT_FEATURES | (1 << FEATURE_CUSTOM_TITLE) | (1 << FEATURE_CONTENT_TRANSITIONS) | + (1 << FEATURE_ACTIVITY_TRANSITIONS) | (1 << FEATURE_ACTION_MODE_OVERLAY); private static final Transition USE_DEFAULT_TRANSITION = new TransitionSet(); @@ -3207,6 +3208,9 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { if (a.getBoolean(R.styleable.Window_windowContentTransitions, false)) { requestFeature(FEATURE_CONTENT_TRANSITIONS); } + if (a.getBoolean(R.styleable.Window_windowActivityTransitions, false)) { + requestFeature(FEATURE_ACTIVITY_TRANSITIONS); + } final WindowManager windowService = (WindowManager) getContext().getSystemService( Context.WINDOW_SERVICE); @@ -3516,7 +3520,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { // Only inflate or create a new TransitionManager if the caller hasn't // already set a custom one. - if (hasFeature(FEATURE_CONTENT_TRANSITIONS)) { + if (hasFeature(FEATURE_ACTIVITY_TRANSITIONS)) { if (mTransitionManager == null) { final int transitionRes = getWindowStyle().getResourceId( R.styleable.Window_windowContentTransitionManager,