FileDocCategorySizeDatePackage
ActivityOptions.javaAPI DocAndroid 5.1 API36228Thu Mar 12 22:22:10 GMT 2015android.app

ActivityOptions

public class ActivityOptions extends Object
Helper class for building an options Bundle that can be used with {@link android.content.Context#startActivity(android.content.Intent, android.os.Bundle) Context.startActivity(Intent, Bundle)} and related methods.

Fields Summary
private static final String
TAG
public static final String
KEY_PACKAGE_NAME
The package name that created the options.
public static final String
KEY_ANIM_TYPE
Type of animation that arguments specify.
public static final String
KEY_ANIM_ENTER_RES_ID
Custom enter animation resource ID.
public static final String
KEY_ANIM_EXIT_RES_ID
Custom exit animation resource ID.
public static final String
KEY_ANIM_IN_PLACE_RES_ID
Custom in-place animation resource ID.
public static final String
KEY_ANIM_THUMBNAIL
Bitmap for thumbnail animation.
public static final String
KEY_ANIM_START_X
Start X position of thumbnail animation.
public static final String
KEY_ANIM_START_Y
Start Y position of thumbnail animation.
public static final String
KEY_ANIM_WIDTH
Initial width of the animation.
public static final String
KEY_ANIM_HEIGHT
Initial height of the animation.
public static final String
KEY_ANIM_START_LISTENER
Callback for when animation is started.
private static final String
KEY_TRANSITION_COMPLETE_LISTENER
For Activity transitions, the calling Activity's TransitionListener used to notify the called Activity when the shared element and the exit transitions complete.
private static final String
KEY_TRANSITION_IS_RETURNING
private static final String
KEY_TRANSITION_SHARED_ELEMENTS
private static final String
KEY_RESULT_DATA
private static final String
KEY_RESULT_CODE
private static final String
KEY_EXIT_COORDINATOR_INDEX
public static final int
ANIM_NONE
public static final int
ANIM_CUSTOM
public static final int
ANIM_SCALE_UP
public static final int
ANIM_THUMBNAIL_SCALE_UP
public static final int
ANIM_THUMBNAIL_SCALE_DOWN
public static final int
ANIM_SCENE_TRANSITION
public static final int
ANIM_DEFAULT
public static final int
ANIM_LAUNCH_TASK_BEHIND
public static final int
ANIM_THUMBNAIL_ASPECT_SCALE_UP
public static final int
ANIM_THUMBNAIL_ASPECT_SCALE_DOWN
public static final int
ANIM_CUSTOM_IN_PLACE
private String
mPackageName
private int
mAnimationType
private int
mCustomEnterResId
private int
mCustomExitResId
private int
mCustomInPlaceResId
private android.graphics.Bitmap
mThumbnail
private int
mStartX
private int
mStartY
private int
mWidth
private int
mHeight
private android.os.IRemoteCallback
mAnimationStartedListener
private android.os.ResultReceiver
mTransitionReceiver
private boolean
mIsReturning
private ArrayList
mSharedElementNames
private android.content.Intent
mResultData
private int
mResultCode
private int
mExitCoordinatorIndex
Constructors Summary
private ActivityOptions()

    
public ActivityOptions(android.os.Bundle opts)

hide

        mPackageName = opts.getString(KEY_PACKAGE_NAME);
        mAnimationType = opts.getInt(KEY_ANIM_TYPE);
        switch (mAnimationType) {
            case ANIM_CUSTOM:
                mCustomEnterResId = opts.getInt(KEY_ANIM_ENTER_RES_ID, 0);
                mCustomExitResId = opts.getInt(KEY_ANIM_EXIT_RES_ID, 0);
                mAnimationStartedListener = IRemoteCallback.Stub.asInterface(
                        opts.getBinder(KEY_ANIM_START_LISTENER));
                break;

            case ANIM_CUSTOM_IN_PLACE:
                mCustomInPlaceResId = opts.getInt(KEY_ANIM_IN_PLACE_RES_ID, 0);
                break;

            case ANIM_SCALE_UP:
                mStartX = opts.getInt(KEY_ANIM_START_X, 0);
                mStartY = opts.getInt(KEY_ANIM_START_Y, 0);
                mWidth = opts.getInt(KEY_ANIM_WIDTH, 0);
                mHeight = opts.getInt(KEY_ANIM_HEIGHT, 0);
                break;

            case ANIM_THUMBNAIL_SCALE_UP:
            case ANIM_THUMBNAIL_SCALE_DOWN:
            case ANIM_THUMBNAIL_ASPECT_SCALE_UP:
            case ANIM_THUMBNAIL_ASPECT_SCALE_DOWN:
                mThumbnail = (Bitmap) opts.getParcelable(KEY_ANIM_THUMBNAIL);
                mStartX = opts.getInt(KEY_ANIM_START_X, 0);
                mStartY = opts.getInt(KEY_ANIM_START_Y, 0);
                mWidth = opts.getInt(KEY_ANIM_WIDTH, 0);
                mHeight = opts.getInt(KEY_ANIM_HEIGHT, 0);
                mAnimationStartedListener = IRemoteCallback.Stub.asInterface(
                        opts.getBinder(KEY_ANIM_START_LISTENER));
                break;

            case ANIM_SCENE_TRANSITION:
                mTransitionReceiver = opts.getParcelable(KEY_TRANSITION_COMPLETE_LISTENER);
                mIsReturning = opts.getBoolean(KEY_TRANSITION_IS_RETURNING, false);
                mSharedElementNames = opts.getStringArrayList(KEY_TRANSITION_SHARED_ELEMENTS);
                mResultData = opts.getParcelable(KEY_RESULT_DATA);
                mResultCode = opts.getInt(KEY_RESULT_CODE);
                mExitCoordinatorIndex = opts.getInt(KEY_EXIT_COORDINATOR_INDEX);
                break;
        }
    
Methods Summary
public voidabort()

hide

        if (mAnimationStartedListener != null) {
            try {
                mAnimationStartedListener.sendResult(null);
            } catch (RemoteException e) {
            }
        }
    
public static voidabort(android.os.Bundle options)

hide

        if (options != null) {
            (new ActivityOptions(options)).abort();
        }
    
public android.app.ActivityOptionsforTargetActivity()
Return the filtered options only meant to be seen by the target activity itself

hide

        if (mAnimationType == ANIM_SCENE_TRANSITION) {
            final ActivityOptions result = new ActivityOptions();
            result.update(this);
            return result;
        }

        return null;
    
public intgetAnimationType()

hide

        return mAnimationType;
    
public intgetCustomEnterResId()

hide

        return mCustomEnterResId;
    
public intgetCustomExitResId()

hide

        return mCustomExitResId;
    
public intgetCustomInPlaceResId()

hide

        return mCustomInPlaceResId;
    
public intgetExitCoordinatorKey()

hide

 return mExitCoordinatorIndex; 
public intgetHeight()

hide

        return mHeight;
    
public booleangetLaunchTaskBehind()

hide

        return mAnimationType == ANIM_LAUNCH_TASK_BEHIND;
    
public android.os.IRemoteCallbackgetOnAnimationStartListener()

hide

        return mAnimationStartedListener;
    
public java.lang.StringgetPackageName()

hide

        return mPackageName;
    
public intgetResultCode()

hide

 return mResultCode; 
public android.content.IntentgetResultData()

hide

 return mResultData; 
public android.os.ResultReceivergetResultReceiver()

hide

 return mTransitionReceiver; 
public java.util.ArrayListgetSharedElementNames()

hide

        return mSharedElementNames;
    
public intgetStartX()

hide

        return mStartX;
    
public intgetStartY()

hide

        return mStartY;
    
public android.graphics.BitmapgetThumbnail()

hide

        return mThumbnail;
    
public intgetWidth()

hide

        return mWidth;
    
public booleanisReturning()

hide

        return mIsReturning;
    
private static android.app.ActivityOptionsmakeAspectScaledThumbnailAnimation(android.view.View source, android.graphics.Bitmap thumbnail, int startX, int startY, int targetWidth, int targetHeight, android.os.Handler handler, android.app.ActivityOptions$OnAnimationStartedListener listener, boolean scaleUp)

        ActivityOptions opts = new ActivityOptions();
        opts.mPackageName = source.getContext().getPackageName();
        opts.mAnimationType = scaleUp ? ANIM_THUMBNAIL_ASPECT_SCALE_UP :
                ANIM_THUMBNAIL_ASPECT_SCALE_DOWN;
        opts.mThumbnail = thumbnail;
        int[] pts = new int[2];
        source.getLocationOnScreen(pts);
        opts.mStartX = pts[0] + startX;
        opts.mStartY = pts[1] + startY;
        opts.mWidth = targetWidth;
        opts.mHeight = targetHeight;
        opts.setOnAnimationStartedListener(handler, listener);
        return opts;
    
public static android.app.ActivityOptionsmakeCustomAnimation(android.content.Context context, int enterResId, int exitResId)
Create an ActivityOptions specifying a custom animation to run when the activity is displayed.

param
context Who is defining this. This is the application that the animation resources will be loaded from.
param
enterResId A resource ID of the animation resource to use for the incoming activity. Use 0 for no animation.
param
exitResId A resource ID of the animation resource to use for the outgoing activity. Use 0 for no animation.
return
Returns a new ActivityOptions object that you can use to supply these options as the options Bundle when starting an activity.


                                                                                                          
        
                
        return makeCustomAnimation(context, enterResId, exitResId, null, null);
    
public static android.app.ActivityOptionsmakeCustomAnimation(android.content.Context context, int enterResId, int exitResId, android.os.Handler handler, android.app.ActivityOptions$OnAnimationStartedListener listener)
Create an ActivityOptions specifying a custom animation to run when the activity is displayed.

param
context Who is defining this. This is the application that the animation resources will be loaded from.
param
enterResId A resource ID of the animation resource to use for the incoming activity. Use 0 for no animation.
param
exitResId A resource ID of the animation resource to use for the outgoing activity. Use 0 for no animation.
param
handler If listener is non-null this must be a valid Handler on which to dispatch the callback; otherwise it should be null.
param
listener Optional OnAnimationStartedListener to find out when the requested animation has started running. If for some reason the animation is not executed, the callback will happen immediately.
return
Returns a new ActivityOptions object that you can use to supply these options as the options Bundle when starting an activity.
hide

        ActivityOptions opts = new ActivityOptions();
        opts.mPackageName = context.getPackageName();
        opts.mAnimationType = ANIM_CUSTOM;
        opts.mCustomEnterResId = enterResId;
        opts.mCustomExitResId = exitResId;
        opts.setOnAnimationStartedListener(handler, listener);
        return opts;
    
public static android.app.ActivityOptionsmakeCustomInPlaceAnimation(android.content.Context context, int animId)
Creates an ActivityOptions specifying a custom animation to run in place on an existing activity.

param
context Who is defining this. This is the application that the animation resources will be loaded from.
param
animId A resource ID of the animation resource to use for the incoming activity.
return
Returns a new ActivityOptions object that you can use to supply these options as the options Bundle when running an in-place animation.
hide

        if (animId == 0) {
            throw new RuntimeException("You must specify a valid animation.");
        }

        ActivityOptions opts = new ActivityOptions();
        opts.mPackageName = context.getPackageName();
        opts.mAnimationType = ANIM_CUSTOM_IN_PLACE;
        opts.mCustomInPlaceResId = animId;
        return opts;
    
public static android.app.ActivityOptionsmakeScaleUpAnimation(android.view.View source, int startX, int startY, int width, int height)
Create an ActivityOptions specifying an animation where the new activity is scaled from a small originating area of the screen to its final full representation.

If the Intent this is being used with has not set its {@link android.content.Intent#setSourceBounds Intent.setSourceBounds}, those bounds will be filled in for you based on the initial bounds passed in here.

param
source The View that the new activity is animating from. This defines the coordinate space for startX and startY.
param
startX The x starting location of the new activity, relative to source.
param
startY The y starting location of the activity, relative to source.
param
width The initial width of the new activity.
param
height The initial height of the new activity.
return
Returns a new ActivityOptions object that you can use to supply these options as the options Bundle when starting an activity.

        ActivityOptions opts = new ActivityOptions();
        opts.mPackageName = source.getContext().getPackageName();
        opts.mAnimationType = ANIM_SCALE_UP;
        int[] pts = new int[2];
        source.getLocationOnScreen(pts);
        opts.mStartX = pts[0] + startX;
        opts.mStartY = pts[1] + startY;
        opts.mWidth = width;
        opts.mHeight = height;
        return opts;
    
public static android.app.ActivityOptionsmakeSceneTransitionAnimation(Activity activity, android.view.View sharedElement, java.lang.String sharedElementName)
Create an ActivityOptions to transition between Activities using cross-Activity scene animations. This method carries the position of one shared element to the started Activity. The position of sharedElement will be used as the epicenter for the 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_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.
param
sharedElement The View to transition to the started Activity.
param
sharedElementName The shared element name as used in the target Activity. This must not be null.
return
Returns a new ActivityOptions object that you can use to supply these options as the options Bundle when starting an activity.
see
android.transition.Transition#setEpicenterCallback( android.transition.Transition.EpicenterCallback)

        return makeSceneTransitionAnimation(activity, Pair.create(sharedElement, sharedElementName));
    
public static android.app.ActivityOptionsmakeSceneTransitionAnimation(Activity activity, android.util.Pair sharedElements)
Create an ActivityOptions to transition between Activities using cross-Activity scene animations. This method carries the position of multiple shared elements to the started Activity. The position of the first element in sharedElements 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_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.
param
sharedElements The names of the shared elements to transfer to the called Activity and their associated Views. The Views must each have a unique shared element name.
return
Returns a new ActivityOptions object that you can use to supply these options as the options Bundle when starting an activity.
see
android.transition.Transition#setEpicenterCallback( android.transition.Transition.EpicenterCallback)

        ActivityOptions opts = new ActivityOptions();
        if (!activity.getWindow().hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)) {
            opts.mAnimationType = ANIM_DEFAULT;
            return opts;
        }
        opts.mAnimationType = ANIM_SCENE_TRANSITION;

        ArrayList<String> names = new ArrayList<String>();
        ArrayList<View> views = new ArrayList<View>();

        if (sharedElements != null) {
            for (int i = 0; i < sharedElements.length; i++) {
                Pair<View, String> sharedElement = sharedElements[i];
                String sharedElementName = sharedElement.second;
                if (sharedElementName == null) {
                    throw new IllegalArgumentException("Shared element name must not be null");
                }
                names.add(sharedElementName);
                View view = sharedElement.first;
                if (view == null) {
                    throw new IllegalArgumentException("Shared element must not be null");
                }
                views.add(sharedElement.first);
            }
        }

        ExitTransitionCoordinator exit = new ExitTransitionCoordinator(activity, names, names,
                views, false);
        opts.mTransitionReceiver = exit;
        opts.mSharedElementNames = names;
        opts.mIsReturning = false;
        opts.mExitCoordinatorIndex =
                activity.mActivityTransitionState.addExitTransitionCoordinator(exit);
        return opts;
    
public static android.app.ActivityOptionsmakeSceneTransitionAnimation(Activity activity, ExitTransitionCoordinator exitCoordinator, java.util.ArrayList sharedElementNames, int resultCode, android.content.Intent resultData)

hide

        ActivityOptions opts = new ActivityOptions();
        opts.mAnimationType = ANIM_SCENE_TRANSITION;
        opts.mSharedElementNames = sharedElementNames;
        opts.mTransitionReceiver = exitCoordinator;
        opts.mIsReturning = true;
        opts.mResultCode = resultCode;
        opts.mResultData = resultData;
        opts.mExitCoordinatorIndex =
                activity.mActivityTransitionState.addExitTransitionCoordinator(exitCoordinator);
        return opts;
    
public static android.app.ActivityOptionsmakeTaskLaunchBehind()
If set along with Intent.FLAG_ACTIVITY_NEW_DOCUMENT then the task being launched will not be presented to the user but will instead be only available through the recents task list. In addition, the new task wil be affiliated with the launching activity's task. Affiliated tasks are grouped together in the recents task list.

This behavior is not supported for activities with {@link android.R.styleable#AndroidManifestActivity_launchMode launchMode} values of singleInstance or singleTask.

        final ActivityOptions opts = new ActivityOptions();
        opts.mAnimationType = ANIM_LAUNCH_TASK_BEHIND;
        return opts;
    
private static android.app.ActivityOptionsmakeThumbnailAnimation(android.view.View source, android.graphics.Bitmap thumbnail, int startX, int startY, android.app.ActivityOptions$OnAnimationStartedListener listener, boolean scaleUp)

        ActivityOptions opts = new ActivityOptions();
        opts.mPackageName = source.getContext().getPackageName();
        opts.mAnimationType = scaleUp ? ANIM_THUMBNAIL_SCALE_UP : ANIM_THUMBNAIL_SCALE_DOWN;
        opts.mThumbnail = thumbnail;
        int[] pts = new int[2];
        source.getLocationOnScreen(pts);
        opts.mStartX = pts[0] + startX;
        opts.mStartY = pts[1] + startY;
        opts.setOnAnimationStartedListener(source.getHandler(), listener);
        return opts;
    
public static android.app.ActivityOptionsmakeThumbnailAspectScaleDownAnimation(android.view.View source, android.graphics.Bitmap thumbnail, int startX, int startY, int targetWidth, int targetHeight, android.os.Handler handler, android.app.ActivityOptions$OnAnimationStartedListener listener)
Create an ActivityOptions specifying an animation where the new activity window and a thumbnail is aspect-scaled to a new location.

param
source The View that this thumbnail is animating to. This defines the coordinate space for startX and startY.
param
thumbnail The bitmap that will be shown as the final thumbnail of the animation.
param
startX The x end location of the bitmap, relative to source.
param
startY The y end location of the bitmap, relative to source.
param
handler If listener is non-null this must be a valid Handler on which to dispatch the callback; otherwise it should be null.
param
listener Optional OnAnimationStartedListener to find out when the requested animation has started running. If for some reason the animation is not executed, the callback will happen immediately.
return
Returns a new ActivityOptions object that you can use to supply these options as the options Bundle when starting an activity.
hide

        return makeAspectScaledThumbnailAnimation(source, thumbnail, startX, startY,
                targetWidth, targetHeight, handler, listener, false);
    
public static android.app.ActivityOptionsmakeThumbnailAspectScaleUpAnimation(android.view.View source, android.graphics.Bitmap thumbnail, int startX, int startY, int targetWidth, int targetHeight, android.os.Handler handler, android.app.ActivityOptions$OnAnimationStartedListener listener)
Create an ActivityOptions specifying an animation where the new activity window and a thumbnail is aspect-scaled to a new location.

param
source The View that this thumbnail is animating from. This defines the coordinate space for startX and startY.
param
thumbnail The bitmap that will be shown as the initial thumbnail of the animation.
param
startX The x starting location of the bitmap, relative to source.
param
startY The y starting location of the bitmap, relative to source.
param
handler If listener is non-null this must be a valid Handler on which to dispatch the callback; otherwise it should be null.
param
listener Optional OnAnimationStartedListener to find out when the requested animation has started running. If for some reason the animation is not executed, the callback will happen immediately.
return
Returns a new ActivityOptions object that you can use to supply these options as the options Bundle when starting an activity.
hide

        return makeAspectScaledThumbnailAnimation(source, thumbnail, startX, startY,
                targetWidth, targetHeight, handler, listener, true);
    
public static android.app.ActivityOptionsmakeThumbnailScaleDownAnimation(android.view.View source, android.graphics.Bitmap thumbnail, int startX, int startY, android.app.ActivityOptions$OnAnimationStartedListener listener)
Create an ActivityOptions specifying an animation where an activity window is scaled from a given position to a thumbnail at a specified location.

param
source The View that this thumbnail is animating to. This defines the coordinate space for startX and startY.
param
thumbnail The bitmap that will be shown as the final thumbnail of the animation.
param
startX The x end location of the bitmap, relative to source.
param
startY The y end location of the bitmap, relative to source.
param
listener Optional OnAnimationStartedListener to find out when the requested animation has started running. If for some reason the animation is not executed, the callback will happen immediately.
return
Returns a new ActivityOptions object that you can use to supply these options as the options Bundle when starting an activity.
hide

        return makeThumbnailAnimation(source, thumbnail, startX, startY, listener, false);
    
public static android.app.ActivityOptionsmakeThumbnailScaleUpAnimation(android.view.View source, android.graphics.Bitmap thumbnail, int startX, int startY)
Create an ActivityOptions specifying an animation where a thumbnail is scaled from a given position to the new activity window that is being started.

If the Intent this is being used with has not set its {@link android.content.Intent#setSourceBounds Intent.setSourceBounds}, those bounds will be filled in for you based on the initial thumbnail location and size provided here.

param
source The View that this thumbnail is animating from. This defines the coordinate space for startX and startY.
param
thumbnail The bitmap that will be shown as the initial thumbnail of the animation.
param
startX The x starting location of the bitmap, relative to source.
param
startY The y starting location of the bitmap, relative to source.
return
Returns a new ActivityOptions object that you can use to supply these options as the options Bundle when starting an activity.

        return makeThumbnailScaleUpAnimation(source, thumbnail, startX, startY, null);
    
public static android.app.ActivityOptionsmakeThumbnailScaleUpAnimation(android.view.View source, android.graphics.Bitmap thumbnail, int startX, int startY, android.app.ActivityOptions$OnAnimationStartedListener listener)
Create an ActivityOptions specifying an animation where a thumbnail is scaled from a given position to the new activity window that is being started.

param
source The View that this thumbnail is animating from. This defines the coordinate space for startX and startY.
param
thumbnail The bitmap that will be shown as the initial thumbnail of the animation.
param
startX The x starting location of the bitmap, relative to source.
param
startY The y starting location of the bitmap, relative to source.
param
listener Optional OnAnimationStartedListener to find out when the requested animation has started running. If for some reason the animation is not executed, the callback will happen immediately.
return
Returns a new ActivityOptions object that you can use to supply these options as the options Bundle when starting an activity.
hide

        return makeThumbnailAnimation(source, thumbnail, startX, startY, listener, true);
    
private voidsetOnAnimationStartedListener(android.os.Handler handler, android.app.ActivityOptions$OnAnimationStartedListener listener)

        if (listener != null) {
            final Handler h = handler;
            final OnAnimationStartedListener finalListener = listener;
            mAnimationStartedListener = new IRemoteCallback.Stub() {
                @Override public void sendResult(Bundle data) throws RemoteException {
                    h.post(new Runnable() {
                        @Override public void run() {
                            finalListener.onAnimationStarted();
                        }
                    });
                }
            };
        }
    
public android.os.BundletoBundle()
Returns the created options as a Bundle, which can be passed to {@link android.content.Context#startActivity(android.content.Intent, android.os.Bundle) Context.startActivity(Intent, Bundle)} and related methods. Note that the returned Bundle is still owned by the ActivityOptions object; you must not modify it, but can supply it to the startActivity methods that take an options Bundle.

        if (mAnimationType == ANIM_DEFAULT) {
            return null;
        }
        Bundle b = new Bundle();
        if (mPackageName != null) {
            b.putString(KEY_PACKAGE_NAME, mPackageName);
        }
        b.putInt(KEY_ANIM_TYPE, mAnimationType);
        switch (mAnimationType) {
            case ANIM_CUSTOM:
                b.putInt(KEY_ANIM_ENTER_RES_ID, mCustomEnterResId);
                b.putInt(KEY_ANIM_EXIT_RES_ID, mCustomExitResId);
                b.putBinder(KEY_ANIM_START_LISTENER, mAnimationStartedListener
                        != null ? mAnimationStartedListener.asBinder() : null);
                break;
            case ANIM_CUSTOM_IN_PLACE:
                b.putInt(KEY_ANIM_IN_PLACE_RES_ID, mCustomInPlaceResId);
                break;
            case ANIM_SCALE_UP:
                b.putInt(KEY_ANIM_START_X, mStartX);
                b.putInt(KEY_ANIM_START_Y, mStartY);
                b.putInt(KEY_ANIM_WIDTH, mWidth);
                b.putInt(KEY_ANIM_HEIGHT, mHeight);
                break;
            case ANIM_THUMBNAIL_SCALE_UP:
            case ANIM_THUMBNAIL_SCALE_DOWN:
            case ANIM_THUMBNAIL_ASPECT_SCALE_UP:
            case ANIM_THUMBNAIL_ASPECT_SCALE_DOWN:
                b.putParcelable(KEY_ANIM_THUMBNAIL, mThumbnail);
                b.putInt(KEY_ANIM_START_X, mStartX);
                b.putInt(KEY_ANIM_START_Y, mStartY);
                b.putInt(KEY_ANIM_WIDTH, mWidth);
                b.putInt(KEY_ANIM_HEIGHT, mHeight);
                b.putBinder(KEY_ANIM_START_LISTENER, mAnimationStartedListener
                        != null ? mAnimationStartedListener.asBinder() : null);
                break;
            case ANIM_SCENE_TRANSITION:
                if (mTransitionReceiver != null) {
                    b.putParcelable(KEY_TRANSITION_COMPLETE_LISTENER, mTransitionReceiver);
                }
                b.putBoolean(KEY_TRANSITION_IS_RETURNING, mIsReturning);
                b.putStringArrayList(KEY_TRANSITION_SHARED_ELEMENTS, mSharedElementNames);
                b.putParcelable(KEY_RESULT_DATA, mResultData);
                b.putInt(KEY_RESULT_CODE, mResultCode);
                b.putInt(KEY_EXIT_COORDINATOR_INDEX, mExitCoordinatorIndex);
                break;
        }

        return b;
    
public voidupdate(android.app.ActivityOptions otherOptions)
Update the current values in this ActivityOptions from those supplied in otherOptions. Any values defined in otherOptions replace those in the base options.

        if (otherOptions.mPackageName != null) {
            mPackageName = otherOptions.mPackageName;
        }
        mTransitionReceiver = null;
        mSharedElementNames = null;
        mIsReturning = false;
        mResultData = null;
        mResultCode = 0;
        mExitCoordinatorIndex = 0;
        mAnimationType = otherOptions.mAnimationType;
        switch (otherOptions.mAnimationType) {
            case ANIM_CUSTOM:
                mCustomEnterResId = otherOptions.mCustomEnterResId;
                mCustomExitResId = otherOptions.mCustomExitResId;
                mThumbnail = null;
                if (mAnimationStartedListener != null) {
                    try {
                        mAnimationStartedListener.sendResult(null);
                    } catch (RemoteException e) {
                    }
                }
                mAnimationStartedListener = otherOptions.mAnimationStartedListener;
                break;
            case ANIM_CUSTOM_IN_PLACE:
                mCustomInPlaceResId = otherOptions.mCustomInPlaceResId;
                break;
            case ANIM_SCALE_UP:
                mStartX = otherOptions.mStartX;
                mStartY = otherOptions.mStartY;
                mWidth = otherOptions.mWidth;
                mHeight = otherOptions.mHeight;
                if (mAnimationStartedListener != null) {
                    try {
                        mAnimationStartedListener.sendResult(null);
                    } catch (RemoteException e) {
                    }
                }
                mAnimationStartedListener = null;
                break;
            case ANIM_THUMBNAIL_SCALE_UP:
            case ANIM_THUMBNAIL_SCALE_DOWN:
            case ANIM_THUMBNAIL_ASPECT_SCALE_UP:
            case ANIM_THUMBNAIL_ASPECT_SCALE_DOWN:
                mThumbnail = otherOptions.mThumbnail;
                mStartX = otherOptions.mStartX;
                mStartY = otherOptions.mStartY;
                mWidth = otherOptions.mWidth;
                mHeight = otherOptions.mHeight;
                if (mAnimationStartedListener != null) {
                    try {
                        mAnimationStartedListener.sendResult(null);
                    } catch (RemoteException e) {
                    }
                }
                mAnimationStartedListener = otherOptions.mAnimationStartedListener;
                break;
            case ANIM_SCENE_TRANSITION:
                mTransitionReceiver = otherOptions.mTransitionReceiver;
                mSharedElementNames = otherOptions.mSharedElementNames;
                mIsReturning = otherOptions.mIsReturning;
                mThumbnail = null;
                mAnimationStartedListener = null;
                mResultData = otherOptions.mResultData;
                mResultCode = otherOptions.mResultCode;
                mExitCoordinatorIndex = otherOptions.mExitCoordinatorIndex;
                break;
        }