Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9826f636 authored by George Mount's avatar George Mount
Browse files

Have Activity Transitions activited by a new window attribute.

Bug 17006497

Window content transitions were being enabled by default in
the Material Theme so that Activity Transitions could be
enabled by default. Unfortunately, this gave the effect that
many applications did not want -- the default transition between
window content is a fade out/in. Here, a new attribute is
added: windowActivityTransitions that is enabled by default
in the Material theme and windowContentTransitions is disabled
by default in all themes.

Change-Id: Iab453d608f00a48ff7ab7f09ce84b52cf5f20294
parent 280813a6
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -1429,6 +1429,7 @@ package android {
    field public static final int windowActionBar = 16843469; // 0x10102cd
    field public static final int windowActionBar = 16843469; // 0x10102cd
    field public static final int windowActionBarOverlay = 16843492; // 0x10102e4
    field public static final int windowActionBarOverlay = 16843492; // 0x10102e4
    field public static final int windowActionModeOverlay = 16843485; // 0x10102dd
    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 windowAllowEnterTransitionOverlap = 16843836; // 0x101043c
    field public static final int windowAllowReturnTransitionOverlap = 16843835; // 0x101043b
    field public static final int windowAllowReturnTransitionOverlap = 16843835; // 0x101043b
    field public static final int windowAnimationStyle = 16842926; // 0x10100ae
    field public static final int windowAnimationStyle = 16842926; // 0x10100ae
@@ -34882,6 +34883,7 @@ package android.view {
    field public static final int FEATURE_ACTION_BAR = 8; // 0x8
    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_BAR_OVERLAY = 9; // 0x9
    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
    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_CONTENT_TRANSITIONS = 12; // 0xc
    field public static final int FEATURE_CONTEXT_MENU = 6; // 0x6
    field public static final int FEATURE_CONTEXT_MENU = 6; // 0x6
    field public static final int FEATURE_CUSTOM_TITLE = 7; // 0x7
    field public static final int FEATURE_CUSTOM_TITLE = 7; // 0x7
+3 −3
Original line number Original line Diff line number Diff line
@@ -4756,7 +4756,7 @@ public class Activity extends ContextThemeWrapper
     * Activity through a returning activity transition, giving you the resultCode
     * 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
     * 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
     * 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
     * <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
     * 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,
     * When {@link android.app.ActivityOptions#makeSceneTransitionAnimation(Activity,
     * android.view.View, String)} was used to start an Activity, <var>callback</var>
     * 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
     * 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.
     * @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>
     * 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
     * will be called to handle shared elements on the <i>launching</i> Activity. Most
     * calls will only come when returning from the started Activity.
     * 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.
     * @param callback Used to manipulate shared element transitions on the launching Activity.
     */
     */
+3 −3
Original line number Original line Diff line number Diff line
@@ -414,7 +414,7 @@ public class ActivityOptions {
     * exit Transition. The position of the shared element in the launched Activity will be the
     * exit Transition. The position of the shared element in the launched Activity will be the
     * epicenter of its entering Transition.
     * 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
     * enabled on the calling Activity to cause an exit transition. The same must be in
     * the called Activity to get an entering transition.</p>
     * the called Activity to get an entering transition.</p>
     * @param activity The Activity whose window contains the shared elements.
     * @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
     * 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.
     * 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
     * enabled on the calling Activity to cause an exit transition. The same must be in
     * the called Activity to get an entering transition.</p>
     * the called Activity to get an entering transition.</p>
     * @param activity The Activity whose window contains the shared elements.
     * @param activity The Activity whose window contains the shared elements.
@@ -453,7 +453,7 @@ public class ActivityOptions {
    public static ActivityOptions makeSceneTransitionAnimation(Activity activity,
    public static ActivityOptions makeSceneTransitionAnimation(Activity activity,
            Pair<View, String>... sharedElements) {
            Pair<View, String>... sharedElements) {
        ActivityOptions opts = new ActivityOptions();
        ActivityOptions opts = new ActivityOptions();
        if (!activity.getWindow().hasFeature(Window.FEATURE_CONTENT_TRANSITIONS)) {
        if (!activity.getWindow().hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)) {
            opts.mAnimationType = ANIM_DEFAULT;
            opts.mAnimationType = ANIM_DEFAULT;
            return opts;
            return opts;
        }
        }
+2 −2
Original line number Original line Diff line number Diff line
@@ -144,7 +144,7 @@ class ActivityTransitionState {
    }
    }


    public void setEnterActivityOptions(Activity activity, ActivityOptions options) {
    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
                && options != null && mEnterActivityOptions == null
                && mEnterTransitionCoordinator == null
                && mEnterTransitionCoordinator == null
                && options.getAnimationType() == ActivityOptions.ANIM_SCENE_TRANSITION) {
                && options.getAnimationType() == ActivityOptions.ANIM_SCENE_TRANSITION) {
@@ -272,7 +272,7 @@ class ActivityTransitionState {
    }
    }


    public void startExitOutTransition(Activity activity, Bundle options) {
    public void startExitOutTransition(Activity activity, Bundle options) {
        if (!activity.getWindow().hasFeature(Window.FEATURE_CONTENT_TRANSITIONS)) {
        if (!activity.getWindow().hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)) {
            return;
            return;
        }
        }
        ActivityOptions activityOptions = new ActivityOptions(options);
        ActivityOptions activityOptions = new ActivityOptions(options);
+25 −16
Original line number Original line Diff line number Diff line
@@ -110,11 +110,20 @@ public abstract class Window {
     */
     */
    public static final int FEATURE_CONTENT_TRANSITIONS = 12;
    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
     * Max value used as a feature ID
     * @hide
     * @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 */
    /** Flag for setting the progress bar's visibility to VISIBLE */
    public static final int PROGRESS_VISIBILITY_ON = -1;
    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
     * have {@link ViewGroup#isTransitionGroup} return true. Typical Transitions will extend
     * {@link android.transition.Visibility} as exiting is governed by changing visibility
     * {@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
     * 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
     * @param transition The Transition to use to move Views out of the scene when calling a
     *                   new Activity.
     *                   new Activity.
@@ -1475,7 +1484,7 @@ public abstract class Window {
     * visibility from {@link View#VISIBLE} to {@link View#INVISIBLE}. If transition is null,
     * 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
     * the views will remain unaffected. If nothing is set, the default will be to use the same
     * transition as {@link #setExitTransition(android.transition.Transition)}.
     * 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
     * @param transition The Transition to use to move Views into the scene when reentering from a
     *                   previously-started Activity.
     *                   previously-started Activity.
@@ -1489,7 +1498,7 @@ public abstract class Window {
     * {@link ViewGroup#isTransitionGroup} return true. Typical Transitions will extend
     * {@link ViewGroup#isTransitionGroup} return true. Typical Transitions will extend
     * {@link android.transition.Visibility} as entering is governed by changing visibility from
     * {@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,
     * {@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.
     * @return the Transition to use to move Views into the initial Scene.
     * @attr ref android.R.styleable#Window_windowEnterTransition
     * @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
     * have {@link ViewGroup#isTransitionGroup} return true. Typical Transitions will extend
     * {@link android.transition.Visibility} as exiting is governed by changing visibility
     * {@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
     * 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
     * @return the Transition to use to move Views out of the scene when calling a
     * new Activity.
     * new Activity.
@@ -1531,7 +1540,7 @@ public abstract class Window {
     * or ViewGroups that have {@link ViewGroup#isTransitionGroup} return true. Typical Transitions
     * or ViewGroups that have {@link ViewGroup#isTransitionGroup} return true. Typical Transitions
     * will extend {@link android.transition.Visibility} as exiting is governed by changing
     * will extend {@link android.transition.Visibility} as exiting is governed by changing
     * visibility from {@link View#VISIBLE} to {@link View#INVISIBLE}.
     * 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
     * @return The Transition to use to move Views into the scene when reentering from a
     *         previously-started Activity.
     *         previously-started Activity.
@@ -1544,7 +1553,7 @@ public abstract class Window {
     * Scene. Typical Transitions will affect size and location, such as
     * Scene. Typical Transitions will affect size and location, such as
     * {@link android.transition.ChangeBounds}. A null
     * {@link android.transition.ChangeBounds}. A null
     * value will cause transferred shared elements to blink to the final position.
     * 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
     * @param transition The Transition to use for shared elements transferred into the content
     *                   Scene.
     *                   Scene.
@@ -1559,7 +1568,7 @@ public abstract class Window {
     * value will cause transferred shared elements to blink to the final position.
     * 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
     * If no value is set, the default will be to use the same value as
     * {@link #setSharedElementEnterTransition(android.transition.Transition)}.
     * {@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
     * @param transition The Transition to use for shared elements transferred out of the content
     *                   Scene.
     *                   Scene.
@@ -1569,7 +1578,7 @@ public abstract class Window {


    /**
    /**
     * Returns the Transition that will be used for shared elements transferred into the content
     * 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.
     * @return Transition to use for sharend elements transferred into the content Scene.
     * @attr ref android.R.styleable#Window_windowSharedElementEnterTransition
     * @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
     * 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.
     * @return Transition to use for sharend elements transferred into the content Scene.
     * @attr ref android.R.styleable#Window_windowSharedElementReturnTransition
     * @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
     * 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,
     * must animate during the exit transition, this Transition should be used. Upon completion,
     * the shared elements may be transferred to the started Activity.
     * 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
     * @param transition The Transition to use for shared elements in the launching Window
     *                   prior to transferring to the launched Activity's 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
     * Activity after it has returned the shared element to it start location. If no value
     * is set, this will default to
     * is set, this will default to
     * {@link #setSharedElementExitTransition(android.transition.Transition)}.
     * {@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
     * @param transition The Transition to use for shared elements in the launching Window
     *                   after the shared element has returned to the 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
     * Returns the Transition to use for shared elements in the launching Window prior
     * to transferring to the launched Activity's Window.
     * 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
     * @return the Transition to use for shared elements in the launching Window prior
     * to transferring to the launched Activity's Window.
     * 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
     * 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.
     * 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
     * @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.
     * 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
     * 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 transitioning into or away from an Activity when called with an Activity Transition.
     * <p>When executing the enter transition, the background starts transparent
     * <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>
     * 300 milliseconds.</p>
     *
     *
     * @return The duration of the window background fade to opaque during enter transition.
     * @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
     * 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 transitioning into or away from an Activity when called with an Activity Transition.
     * <p>When executing the enter transition, the background starts transparent
     * <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>
     * 300 milliseconds.</p>
     *
     *
     * @param fadeDurationMillis The duration of the window background fade to or from opaque
     * @param fadeDurationMillis The duration of the window background fade to or from opaque
Loading