diff options
| author | 2014-09-11 21:54:12 +0000 | |
|---|---|---|
| committer | 2014-09-11 21:54:13 +0000 | |
| commit | db352c783575afee2d6bc29baf45c83d5fc421cf (patch) | |
| tree | f4147eac22d928f0be27590ed583840290eec47a | |
| parent | 784ab49b6e36aa15ce6a00dfbba6215a7991fce3 (diff) | |
| parent | 9826f636ad4fe3714d60972acd918e09eb44d971 (diff) | |
Merge "Have Activity Transitions activited by a new window attribute." into lmp-dev
| -rw-r--r-- | api/current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/app/Activity.java | 6 | ||||
| -rw-r--r-- | core/java/android/app/ActivityOptions.java | 6 | ||||
| -rw-r--r-- | core/java/android/app/ActivityTransitionState.java | 4 | ||||
| -rw-r--r-- | core/java/android/view/Window.java | 41 | ||||
| -rw-r--r-- | core/res/res/values/attrs.xml | 5 | ||||
| -rw-r--r-- | core/res/res/values/public.xml | 1 | ||||
| -rw-r--r-- | core/res/res/values/themes.xml | 4 | ||||
| -rw-r--r-- | core/res/res/values/themes_leanback.xml | 1 | ||||
| -rw-r--r-- | core/res/res/values/themes_material.xml | 6 | ||||
| -rw-r--r-- | policy/src/com/android/internal/policy/impl/PhoneWindow.java | 6 | 
11 files changed, 55 insertions, 27 deletions
diff --git a/api/current.txt b/api/current.txt index b06951fd9c56..82aad7993f21 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 89a9692fb2c7..701ab1d809dc 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}.       *       * <p>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, <var>callback</var>       * will be called to handle shared elements on the <i>launched</i> 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, <var>callback</var>       * will be called to handle shared elements on the <i>launching</i> 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 213c7f6eff6d..cd6a4f51bf90 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.       * -     * <p>This requires {@link android.view.Window#FEATURE_CONTENT_TRANSITIONS} to be +     * <p>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.</p>       * @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.       * -     * <p>This requires {@link android.view.Window#FEATURE_CONTENT_TRANSITIONS} to be +     * <p>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.</p>       * @param activity The Activity whose window contains the shared elements. @@ -453,7 +453,7 @@ public class ActivityOptions {      public static ActivityOptions makeSceneTransitionAnimation(Activity activity,              Pair<View, String>... 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 ad4a22bb7a57..bc2e6ca5f57f 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 ebc683abe0b7..63ab7d252237 100644 --- a/core/java/android/view/Window.java +++ b/core/java/android/view/Window.java @@ -111,10 +111,19 @@ 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 <code>transition</code> 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.       * <p>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.</p>       *       * @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.       * <p>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.</p>       *       * @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 13b1dd920bd7..438d1fb04cbb 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -458,6 +458,10 @@               transitions between different window content. -->          <attr name="windowContentTransitionManager" format="reference" /> +        <!-- Flag indicating whether this window allows Activity Transitions. +             Corresponds to {@link android.view.Window#FEATURE_ACTIVITY_TRANSITIONS}. --> +        <attr name="windowActivityTransitions" format="boolean" /> +          <!-- Reference to a Transition XML resource defining the desired Transition               used to move Views into the initial Window's content Scene. Corresponds to               {@link android.view.Window#setEnterTransition(android.transition.Transition)}. --> @@ -1792,6 +1796,7 @@          <attr name="windowTranslucentNavigation" />          <attr name="windowSwipeToDismiss" />          <attr name="windowContentTransitions" /> +        <attr name="windowActivityTransitions" />          <attr name="windowContentTransitionManager" />          <attr name="windowActionBarFullscreenDecorLayout" /> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 38b1e130377d..7e3a6fafc441 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2293,6 +2293,7 @@    <public type="attr" name="patternPathData" />    <public type="attr" name="strokeAlpha" />    <public type="attr" name="fillAlpha" /> +  <public type="attr" name="windowActivityTransitions" />    <public-padding type="dimen" name="l_resource_pad" end="0x01050010" /> diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml index 48de5adf552c..d0097aacf7f3 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.          <item name="navigationBarColor">@color/black</item>          <item name="windowActionBarFullscreenDecorLayout">@layout/screen_action_bar</item>          <item name="windowContentTransitions">false</item> +        <item name="windowActivityTransitions">false</item>          <!-- Define these here; ContextThemeWrappers around themes that define them should               always clear these values. --> @@ -816,6 +817,7 @@ please see themes_device_defaults.xml.      <!-- Theme for the dialog shown when an app crashes or ANRs. -->      <style name="Theme.Dialog.AppError" parent="Theme.DeviceDefault.Light.Dialog.Alert">          <item name="windowContentTransitions">false</item> +        <item name="windowActivityTransitions">false</item>          <item name="windowCloseOnTouchOutside">false</item>      </style> @@ -827,6 +829,7 @@ please see themes_device_defaults.xml.          <item name="textColor">@color/secondary_text_nofocus</item>          <item name="windowCloseOnTouchOutside">false</item>          <item name="windowContentTransitions">false</item> +        <item name="windowActivityTransitions">false</item>      </style>      <!-- Theme for a window that looks like a toast. --> @@ -836,6 +839,7 @@ please see themes_device_defaults.xml.          <item name="backgroundDimEnabled">false</item>          <item name="windowCloseOnTouchOutside">false</item>          <item name="windowContentTransitions">false</item> +        <item name="windowActivityTransitions">false</item>      </style>  </resources> diff --git a/core/res/res/values/themes_leanback.xml b/core/res/res/values/themes_leanback.xml index 720733f4eab0..82cf288f4629 100644 --- a/core/res/res/values/themes_leanback.xml +++ b/core/res/res/values/themes_leanback.xml @@ -76,6 +76,7 @@      <style name="Theme.Leanback.Dialog.AppError" parent="Theme.Leanback.Dialog">          <item name="windowContentTransitions">false</item> +        <item name="windowActivityTransitions">false</item>          <item name="windowCloseOnTouchOutside">false</item>      </style> diff --git a/core/res/res/values/themes_material.xml b/core/res/res/values/themes_material.xml index 485ea0834fa4..008e1700d215 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.          <item name="windowTitleStyle">@style/WindowTitle.Material</item>          <item name="windowTitleSize">@dimen/action_bar_default_height_material</item>          <item name="windowTitleBackgroundStyle">@style/WindowTitleBackground.Material</item> -        <item name="windowContentTransitions">true</item> +        <item name="windowContentTransitions">false</item> +        <item name="windowActivityTransitions">true</item>          <item name="windowAnimationStyle">@style/Animation.Material.Activity</item>          <item name="windowSoftInputMode">stateUnspecified|adjustUnspecified</item>          <item name="windowActionBar">true</item> @@ -511,7 +512,8 @@ please see themes_device_defaults.xml.          <item name="windowEnterTransition">@transition/fade</item>          <item name="windowSharedElementEnterTransition">@transition/move</item>          <item name="windowSharedElementExitTransition">@transition/move</item> -        <item name="windowContentTransitions">true</item> +        <item name="windowContentTransitions">false</item> +        <item name="windowActivityTransitions">true</item>          <!-- Dialog attributes -->          <item name="dialogTheme">@style/Theme.Material.Light.Dialog</item> diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index cce30c7fecc7..f802e1eeb23b 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,  |