ActivityOptions.java revision 9944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31
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.RemoteException; 258078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackbornimport android.view.View; 266de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 276de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn/** 286de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Helper class for building an options Bundle that can be used with 296de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * {@link android.content.Context#startActivity(android.content.Intent, android.os.Bundle) 306de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Context.startActivity(Intent, Bundle)} and related methods. 316de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 326de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackbornpublic class ActivityOptions { 336de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 346de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * The package name that created the options. 356de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @hide 366de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 376de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static final String KEY_PACKAGE_NAME = "android:packageName"; 386de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 396de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 408078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Type of animation that arguments specify. 418078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 428078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 438078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final String KEY_ANIM_TYPE = "android:animType"; 448078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 458078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 466de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Custom enter animation resource ID. 476de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @hide 486de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 496de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static final String KEY_ANIM_ENTER_RES_ID = "android:animEnterRes"; 506de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 516de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 526de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Custom exit animation resource ID. 536de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @hide 546de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 556de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static final String KEY_ANIM_EXIT_RES_ID = "android:animExitRes"; 566de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 578078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 588078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Bitmap for thumbnail animation. 598078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 608078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 618078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final String KEY_ANIM_THUMBNAIL = "android:animThumbnail"; 628078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 638078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 648078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Start X position of thumbnail animation. 658078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 668078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 678078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final String KEY_ANIM_START_X = "android:animStartX"; 688078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 698078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 708078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Start Y position of thumbnail animation. 718078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 728078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 738078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final String KEY_ANIM_START_Y = "android:animStartY"; 748078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 758078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 768078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Callback for when animation is started. 778078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 788078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 798078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final String KEY_ANIM_START_LISTENER = "android:animStartListener"; 808078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 818078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 828078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final int ANIM_NONE = 0; 838078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 848078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final int ANIM_CUSTOM = 1; 858078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 868078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static final int ANIM_THUMBNAIL = 2; 878078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 886de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private String mPackageName; 898078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn private int mAnimationType = ANIM_NONE; 906de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private int mCustomEnterResId; 916de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private int mCustomExitResId; 928078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn private Bitmap mThumbnail; 938078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn private int mStartX; 948078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn private int mStartY; 958078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn private IRemoteCallback mAnimationStartedListener; 966de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 976de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 986de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Create an ActivityOptions specifying a custom animation to run when 996de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * the activity is displayed. 1006de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * 1016de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @param context Who is defining this. This is the application that the 1026de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * animation resources will be loaded from. 1036de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @param enterResId A resource ID of the animation resource to use for 1046de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * the incoming activity. Use 0 for no animation. 1056de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @param exitResId A resource ID of the animation resource to use for 1066de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * the outgoing activity. Use 0 for no animation. 1076de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @return Returns a new ActivityOptions object that you can use to 1086de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * supply these options as the options Bundle when starting an activity. 1096de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 1106de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static ActivityOptions makeCustomAnimation(Context context, 1116de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn int enterResId, int exitResId) { 1126de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn ActivityOptions opts = new ActivityOptions(); 1136de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn opts.mPackageName = context.getPackageName(); 1148078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mAnimationType = ANIM_CUSTOM; 1156de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn opts.mCustomEnterResId = enterResId; 1166de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn opts.mCustomExitResId = exitResId; 1176de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return opts; 1186de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1196de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 1208078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 1218078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Callback for use with {@link ActivityOptions#makeThumbnailScaleUpAnimation} 1228078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * to find out when the given animation has started running. 1239944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * @hide 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. 1409944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * @return Returns a new ActivityOptions object that you can use to 1419944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * supply these options as the options Bundle when starting an activity. 1429944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn */ 1439944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn public static ActivityOptions makeThumbnailScaleUpAnimation(View source, 1449944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn Bitmap thumbnail, int startX, int startY) { 1459944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn return makeThumbnailScaleUpAnimation(source, thumbnail, startX, startY, null); 1469944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn } 1479944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn 1489944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn /** 1499944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * Create an ActivityOptions specifying an animation where a thumbnail 1509944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * is scaled from a given position to the new activity window that is 1519944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * being started. 1529944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * 1539944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * @param source The View that this thumbnail is animating from. This 1549944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * defines the coordinate space for <var>startX</var> and <var>startY</var>. 1559944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * @param thumbnail The bitmap that will be shown as the initial thumbnail 1569944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * of the animation. 1579944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * @param startX The x starting location of the bitmap, in screen coordiantes. 1589944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * @param startY The y starting location of the bitmap, in screen coordinates. 1598078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @param listener Optional OnAnimationStartedListener to find out when the 1608078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * requested animation has started running. If for some reason the animation 1618078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * is not executed, the callback will happen immediately. 1628078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @return Returns a new ActivityOptions object that you can use to 1638078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * supply these options as the options Bundle when starting an activity. 1649944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31Dianne Hackborn * @hide 1658078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 1668078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static ActivityOptions makeThumbnailScaleUpAnimation(View source, 1678078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn Bitmap thumbnail, int startX, int startY, OnAnimationStartedListener listener) { 1688078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn ActivityOptions opts = new ActivityOptions(); 1698078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mPackageName = source.getContext().getPackageName(); 1708078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mAnimationType = ANIM_THUMBNAIL; 1718078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mThumbnail = thumbnail; 1728078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn int[] pts = new int[2]; 1738078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn source.getLocationOnScreen(pts); 1748078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mStartX = pts[0] + startX; 1758078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mStartY = pts[1] + startY; 1768078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn if (listener != null) { 1778078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn final Handler h = source.getHandler(); 1788078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn final OnAnimationStartedListener finalListener = listener; 1798078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.mAnimationStartedListener = new IRemoteCallback.Stub() { 1808078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn @Override public void sendResult(Bundle data) throws RemoteException { 1818078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn h.post(new Runnable() { 1828078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn @Override public void run() { 1838078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn finalListener.onAnimationStarted(); 1848078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 1858078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn }); 1868078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 1878078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn }; 1888078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 1898078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return opts; 1908078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 1918078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 1926de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private ActivityOptions() { 1936de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1946de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 1956de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 1966de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public ActivityOptions(Bundle opts) { 1976de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mPackageName = opts.getString(KEY_PACKAGE_NAME); 1988078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationType = opts.getInt(KEY_ANIM_TYPE); 1998078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn if (mAnimationType == ANIM_CUSTOM) { 2006de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mCustomEnterResId = opts.getInt(KEY_ANIM_ENTER_RES_ID, 0); 2016de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mCustomExitResId = opts.getInt(KEY_ANIM_EXIT_RES_ID, 0); 2028078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } else if (mAnimationType == ANIM_THUMBNAIL) { 2038078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mThumbnail = (Bitmap)opts.getParcelable(KEY_ANIM_THUMBNAIL); 2048078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mStartX = opts.getInt(KEY_ANIM_START_X, 0); 2058078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mStartY = opts.getInt(KEY_ANIM_START_Y, 0); 2068078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationStartedListener = IRemoteCallback.Stub.asInterface( 2078078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn opts.getIBinder(KEY_ANIM_START_LISTENER)); 2086de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2096de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2106de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 2116de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 2126de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public String getPackageName() { 2136de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return mPackageName; 2146de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2156de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 2166de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 2178078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public int getAnimationType() { 2188078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return mAnimationType; 2196de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2206de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 2216de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 2226de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public int getCustomEnterResId() { 2236de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return mCustomEnterResId; 2246de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2256de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 2266de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 2276de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public int getCustomExitResId() { 2286de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return mCustomExitResId; 2296de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2306de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 2318078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2328078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public Bitmap getThumbnail() { 2338078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return mThumbnail; 2348078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2358078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2368078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2378078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public int getStartX() { 2388078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return mStartX; 2398078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2408078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2418078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2428078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public int getStartY() { 2438078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return mStartY; 2448078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2458078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2468078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2478078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public IRemoteCallback getOnAnimationStartListener() { 2488078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn return mAnimationStartedListener; 2498078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2508078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2518078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2528078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public void abort() { 2538078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn if (mAnimationStartedListener != null) { 2548078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn try { 2558078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationStartedListener.sendResult(null); 2568078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } catch (RemoteException e) { 2578078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2588078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2598078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2608078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2618078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** @hide */ 2628078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public static void abort(Bundle options) { 2638078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn if (options != null) { 2648078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn (new ActivityOptions(options)).abort(); 2658078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2668078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2678078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 2686de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 2696de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Join the values in <var>otherOptions</var> in to this one. Any values 2706de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * defined in <var>otherOptions</var> replace those in the base options. 2716de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 2726de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public void join(ActivityOptions otherOptions) { 2736de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn if (otherOptions.mPackageName != null) { 2746de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mPackageName = otherOptions.mPackageName; 2756de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2768078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn switch (otherOptions.mAnimationType) { 2778078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn case ANIM_CUSTOM: 2788078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationType = otherOptions.mAnimationType; 2798078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mCustomEnterResId = otherOptions.mCustomEnterResId; 2808078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mCustomExitResId = otherOptions.mCustomExitResId; 2818078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mThumbnail = null; 2828078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationStartedListener = null; 2838078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn break; 2848078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn case ANIM_THUMBNAIL: 2858078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationType = otherOptions.mAnimationType; 2868078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mThumbnail = otherOptions.mThumbnail; 2878078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mStartX = otherOptions.mStartX; 2888078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mStartY = otherOptions.mStartY; 2898078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn if (otherOptions.mAnimationStartedListener != null) { 2908078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn try { 2918078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn otherOptions.mAnimationStartedListener.sendResult(null); 2928078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } catch (RemoteException e) { 2938078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2948078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 2958078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAnimationStartedListener = otherOptions.mAnimationStartedListener; 2968078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn break; 2976de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2986de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 2996de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 3006de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 3016de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Returns the created options as a Bundle, which can be passed to 3026de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * {@link android.content.Context#startActivity(android.content.Intent, android.os.Bundle) 3036de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Context.startActivity(Intent, Bundle)} and related methods. 3046de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Note that the returned Bundle is still owned by the ActivityOptions 3056de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * object; you must not modify it, but can supply it to the startActivity 3066de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * methods that take an options Bundle. 3076de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 3086de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public Bundle toBundle() { 3096de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn Bundle b = new Bundle(); 3106de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn if (mPackageName != null) { 3116de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn b.putString(KEY_PACKAGE_NAME, mPackageName); 3126de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 3138078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn switch (mAnimationType) { 3148078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn case ANIM_CUSTOM: 3158078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_TYPE, mAnimationType); 3168078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_ENTER_RES_ID, mCustomEnterResId); 3178078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_EXIT_RES_ID, mCustomExitResId); 3188078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn break; 3198078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn case ANIM_THUMBNAIL: 3208078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_TYPE, mAnimationType); 3218078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putParcelable(KEY_ANIM_THUMBNAIL, mThumbnail); 3228078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_START_X, mStartX); 3238078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putInt(KEY_ANIM_START_Y, mStartY); 3248078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn b.putIBinder(KEY_ANIM_START_LISTENER, mAnimationStartedListener 3258078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn != null ? mAnimationStartedListener.asBinder() : null); 3266de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 3276de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return b; 3286de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 3296de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn} 330