ActivityOptions.java revision 8078d8c8a282ca81344febe7256f63b1e805e3aa
16de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn/* 26de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Copyright (C) 2012 The Android Open Source Project 36de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * 46de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 56de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * you may not use this file except in compliance with the License. 66de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * You may obtain a copy of the License at 76de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * 86de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 96de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * 106de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Unless required by applicable law or agreed to in writing, software 116de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 126de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * See the License for the specific language governing permissions and 146de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * limitations under the License. 156de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 166de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 176de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackbornpackage android.app; 186de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 196de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackbornimport android.content.Context; 208078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackbornimport android.graphics.Bitmap; 216de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackbornimport android.os.Bundle; 228078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackbornimport android.os.Handler; 238078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackbornimport android.os.IRemoteCallback; 248078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackbornimport android.os.Message; 258078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackbornimport android.os.RemoteException; 268078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackbornimport android.view.View; 276de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 286de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn/** 296de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Helper class for building an options Bundle that can be used with 306de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * {@link android.content.Context#startActivity(android.content.Intent, android.os.Bundle) 316de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Context.startActivity(Intent, Bundle)} and related methods. 326de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 336de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackbornpublic class ActivityOptions { 346de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 356de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * The package name that created the options. 366de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @hide 376de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 386de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static final String KEY_PACKAGE_NAME = "android:packageName"; 396de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 406de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 418078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Type of animation that arguments specify. 428078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 438078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 448078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final String KEY_ANIM_TYPE = "android:animType"; 458078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 468078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 476de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Custom enter animation resource ID. 486de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @hide 496de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 506de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static final String KEY_ANIM_ENTER_RES_ID = "android:animEnterRes"; 516de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 526de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 536de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Custom exit animation resource ID. 546de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @hide 556de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 566de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static final String KEY_ANIM_EXIT_RES_ID = "android:animExitRes"; 576de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 588078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 598078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Bitmap for thumbnail animation. 608078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 618078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 628078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final String KEY_ANIM_THUMBNAIL = "android:animThumbnail"; 638078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 648078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 658078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Start X position of thumbnail animation. 668078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 678078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 688078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final String KEY_ANIM_START_X = "android:animStartX"; 698078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 708078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 718078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Start Y position of thumbnail animation. 728078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 738078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 748078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final String KEY_ANIM_START_Y = "android:animStartY"; 758078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 768078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 778078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Callback for when animation is started. 788078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 798078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 808078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final String KEY_ANIM_START_LISTENER = "android:animStartListener"; 818078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 828078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 838078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final int ANIM_NONE = 0; 848078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 858078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final int ANIM_CUSTOM = 1; 868078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 878078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final int ANIM_THUMBNAIL = 2; 888078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 896de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private String mPackageName; 908078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn private int mAnimationType = ANIM_NONE; 916de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private int mCustomEnterResId; 926de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private int mCustomExitResId; 938078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn private Bitmap mThumbnail; 948078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn private int mStartX; 958078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn private int mStartY; 968078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn private IRemoteCallback mAnimationStartedListener; 976de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 986de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 996de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Create an ActivityOptions specifying a custom animation to run when 1006de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * the activity is displayed. 1016de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * 1026de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @param context Who is defining this. This is the application that the 1036de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * animation resources will be loaded from. 1046de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @param enterResId A resource ID of the animation resource to use for 1056de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * the incoming activity. Use 0 for no animation. 1066de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @param exitResId A resource ID of the animation resource to use for 1076de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * the outgoing activity. Use 0 for no animation. 1086de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @return Returns a new ActivityOptions object that you can use to 1096de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * supply these options as the options Bundle when starting an activity. 1106de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 1116de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static ActivityOptions makeCustomAnimation(Context context, 1126de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn int enterResId, int exitResId) { 1136de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn ActivityOptions opts = new ActivityOptions(); 1146de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn opts.mPackageName = context.getPackageName(); 1158078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mAnimationType = ANIM_CUSTOM; 1166de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn opts.mCustomEnterResId = enterResId; 1176de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn opts.mCustomExitResId = exitResId; 1186de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return opts; 1196de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1206de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 1218078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 1228078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Callback for use with {@link ActivityOptions#makeThumbnailScaleUpAnimation} 1238078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * to find out when the given animation has started running. 1248078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 1258078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public interface OnAnimationStartedListener { 1268078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn void onAnimationStarted(); 1278078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 1288078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 1298078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 1308078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Create an ActivityOptions specifying an animation where a thumbnail 1318078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * is scaled from a given position to the new activity window that is 1328078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * being started. 1338078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * 1348078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @param source The View that this thumbnail is animating from. This 1358078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * defines the coordinate space for <var>startX</var> and <var>startY</var>. 1368078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @param thumbnail The bitmap that will be shown as the initial thumbnail 1378078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * of the animation. 1388078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @param startX The x starting location of the bitmap, in screen coordiantes. 1398078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @param startY The y starting location of the bitmap, in screen coordinates. 1408078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @param listener Optional OnAnimationStartedListener to find out when the 1418078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * requested animation has started running. If for some reason the animation 1428078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * is not executed, the callback will happen immediately. 1438078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @return Returns a new ActivityOptions object that you can use to 1448078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * supply these options as the options Bundle when starting an activity. 1458078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 1468078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static ActivityOptions makeThumbnailScaleUpAnimation(View source, 1478078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn Bitmap thumbnail, int startX, int startY, OnAnimationStartedListener listener) { 1488078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn ActivityOptions opts = new ActivityOptions(); 1498078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mPackageName = source.getContext().getPackageName(); 1508078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mAnimationType = ANIM_THUMBNAIL; 1518078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mThumbnail = thumbnail; 1528078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn int[] pts = new int[2]; 1538078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn source.getLocationOnScreen(pts); 1548078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mStartX = pts[0] + startX; 1558078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mStartY = pts[1] + startY; 1568078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn if (listener != null) { 1578078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn final Handler h = source.getHandler(); 1588078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn final OnAnimationStartedListener finalListener = listener; 1598078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mAnimationStartedListener = new IRemoteCallback.Stub() { 1608078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn @Override public void sendResult(Bundle data) throws RemoteException { 1618078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn h.post(new Runnable() { 1628078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn @Override public void run() { 1638078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn finalListener.onAnimationStarted(); 1648078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 1658078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn }); 1668078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 1678078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn }; 1688078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 1698078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return opts; 1708078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 1718078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 1726de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private ActivityOptions() { 1736de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1746de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 1756de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 1766de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public ActivityOptions(Bundle opts) { 1776de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mPackageName = opts.getString(KEY_PACKAGE_NAME); 1788078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationType = opts.getInt(KEY_ANIM_TYPE); 1798078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn if (mAnimationType == ANIM_CUSTOM) { 1806de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mCustomEnterResId = opts.getInt(KEY_ANIM_ENTER_RES_ID, 0); 1816de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mCustomExitResId = opts.getInt(KEY_ANIM_EXIT_RES_ID, 0); 1828078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } else if (mAnimationType == ANIM_THUMBNAIL) { 1838078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mThumbnail = (Bitmap)opts.getParcelable(KEY_ANIM_THUMBNAIL); 1848078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mStartX = opts.getInt(KEY_ANIM_START_X, 0); 1858078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mStartY = opts.getInt(KEY_ANIM_START_Y, 0); 1868078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationStartedListener = IRemoteCallback.Stub.asInterface( 1878078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.getIBinder(KEY_ANIM_START_LISTENER)); 1886de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1896de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1906de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 1916de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 1926de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public String getPackageName() { 1936de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return mPackageName; 1946de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1956de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 1966de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 1978078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public int getAnimationType() { 1988078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return mAnimationType; 1996de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2006de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 2016de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 2026de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public int getCustomEnterResId() { 2036de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return mCustomEnterResId; 2046de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2056de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 2066de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 2076de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public int getCustomExitResId() { 2086de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return mCustomExitResId; 2096de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2106de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 2118078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2128078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public Bitmap getThumbnail() { 2138078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return mThumbnail; 2148078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2158078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2168078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2178078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public int getStartX() { 2188078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return mStartX; 2198078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2208078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2218078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2228078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public int getStartY() { 2238078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return mStartY; 2248078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2258078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2268078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2278078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public IRemoteCallback getOnAnimationStartListener() { 2288078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return mAnimationStartedListener; 2298078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2308078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2318078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2328078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public void abort() { 2338078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn if (mAnimationStartedListener != null) { 2348078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn try { 2358078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationStartedListener.sendResult(null); 2368078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } catch (RemoteException e) { 2378078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2388078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2398078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2408078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2418078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2428078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static void abort(Bundle options) { 2438078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn if (options != null) { 2448078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn (new ActivityOptions(options)).abort(); 2458078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2468078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2478078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2486de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 2496de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Join the values in <var>otherOptions</var> in to this one. Any values 2506de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * defined in <var>otherOptions</var> replace those in the base options. 2516de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 2526de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public void join(ActivityOptions otherOptions) { 2536de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn if (otherOptions.mPackageName != null) { 2546de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mPackageName = otherOptions.mPackageName; 2556de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2568078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn switch (otherOptions.mAnimationType) { 2578078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn case ANIM_CUSTOM: 2588078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationType = otherOptions.mAnimationType; 2598078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mCustomEnterResId = otherOptions.mCustomEnterResId; 2608078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mCustomExitResId = otherOptions.mCustomExitResId; 2618078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mThumbnail = null; 2628078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationStartedListener = null; 2638078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn break; 2648078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn case ANIM_THUMBNAIL: 2658078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationType = otherOptions.mAnimationType; 2668078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mThumbnail = otherOptions.mThumbnail; 2678078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mStartX = otherOptions.mStartX; 2688078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mStartY = otherOptions.mStartY; 2698078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn if (otherOptions.mAnimationStartedListener != null) { 2708078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn try { 2718078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn otherOptions.mAnimationStartedListener.sendResult(null); 2728078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } catch (RemoteException e) { 2738078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2748078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2758078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationStartedListener = otherOptions.mAnimationStartedListener; 2768078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn break; 2776de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2786de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2796de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 2806de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 2816de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Returns the created options as a Bundle, which can be passed to 2826de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * {@link android.content.Context#startActivity(android.content.Intent, android.os.Bundle) 2836de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Context.startActivity(Intent, Bundle)} and related methods. 2846de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Note that the returned Bundle is still owned by the ActivityOptions 2856de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * object; you must not modify it, but can supply it to the startActivity 2866de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * methods that take an options Bundle. 2876de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 2886de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public Bundle toBundle() { 2896de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn Bundle b = new Bundle(); 2906de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn if (mPackageName != null) { 2916de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn b.putString(KEY_PACKAGE_NAME, mPackageName); 2926de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2938078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn switch (mAnimationType) { 2948078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn case ANIM_CUSTOM: 2958078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_TYPE, mAnimationType); 2968078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_ENTER_RES_ID, mCustomEnterResId); 2978078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_EXIT_RES_ID, mCustomExitResId); 2988078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn break; 2998078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn case ANIM_THUMBNAIL: 3008078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_TYPE, mAnimationType); 3018078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putParcelable(KEY_ANIM_THUMBNAIL, mThumbnail); 3028078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_START_X, mStartX); 3038078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_START_Y, mStartY); 3048078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putIBinder(KEY_ANIM_START_LISTENER, mAnimationStartedListener 3058078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn != null ? mAnimationStartedListener.asBinder() : null); 3066de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 3076de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return b; 3086de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 3096de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn} 310