ActivityOptions.java revision 6de01a9b03ad6f8a1af4a0d893d952caa4b69d39
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; 206de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackbornimport android.os.Bundle; 216de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 226de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn/** 236de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Helper class for building an options Bundle that can be used with 246de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * {@link android.content.Context#startActivity(android.content.Intent, android.os.Bundle) 256de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Context.startActivity(Intent, Bundle)} and related methods. 266de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 276de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackbornpublic class ActivityOptions { 286de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 296de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * The package name that created the options. 306de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @hide 316de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 326de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static final String KEY_PACKAGE_NAME = "android:packageName"; 336de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 346de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 356de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Custom enter animation resource ID. 366de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @hide 376de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 386de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static final String KEY_ANIM_ENTER_RES_ID = "android:animEnterRes"; 396de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 406de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 416de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Custom exit animation resource ID. 426de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @hide 436de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 446de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static final String KEY_ANIM_EXIT_RES_ID = "android:animExitRes"; 456de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 466de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private String mPackageName; 476de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private boolean mIsCustomAnimation; 486de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private int mCustomEnterResId; 496de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private int mCustomExitResId; 506de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 516de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 526de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Create an ActivityOptions specifying a custom animation to run when 536de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * the activity is displayed. 546de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * 556de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @param context Who is defining this. This is the application that the 566de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * animation resources will be loaded from. 576de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @param enterResId A resource ID of the animation resource to use for 586de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * the incoming activity. Use 0 for no animation. 596de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @param exitResId A resource ID of the animation resource to use for 606de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * the outgoing activity. Use 0 for no animation. 616de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * @return Returns a new ActivityOptions object that you can use to 626de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * supply these options as the options Bundle when starting an activity. 636de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 646de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public static ActivityOptions makeCustomAnimation(Context context, 656de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn int enterResId, int exitResId) { 666de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn ActivityOptions opts = new ActivityOptions(); 676de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn opts.mPackageName = context.getPackageName(); 686de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn opts.mIsCustomAnimation = true; 696de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn opts.mCustomEnterResId = enterResId; 706de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn opts.mCustomExitResId = exitResId; 716de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return opts; 726de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 736de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 746de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn private ActivityOptions() { 756de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 766de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 776de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 786de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public ActivityOptions(Bundle opts) { 796de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mPackageName = opts.getString(KEY_PACKAGE_NAME); 806de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn if (opts.containsKey(KEY_ANIM_ENTER_RES_ID)) { 816de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mIsCustomAnimation = true; 826de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mCustomEnterResId = opts.getInt(KEY_ANIM_ENTER_RES_ID, 0); 836de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mCustomExitResId = opts.getInt(KEY_ANIM_EXIT_RES_ID, 0); 846de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 856de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 866de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 876de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 886de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public String getPackageName() { 896de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return mPackageName; 906de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 916de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 926de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 936de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public boolean isCustomAnimation() { 946de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return mIsCustomAnimation; 956de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 966de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 976de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 986de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public int getCustomEnterResId() { 996de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return mCustomEnterResId; 1006de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1016de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 1026de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** @hide */ 1036de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public int getCustomExitResId() { 1046de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return mCustomExitResId; 1056de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1066de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 1076de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 1086de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Join the values in <var>otherOptions</var> in to this one. Any values 1096de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * defined in <var>otherOptions</var> replace those in the base options. 1106de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 1116de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public void join(ActivityOptions otherOptions) { 1126de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn if (otherOptions.mPackageName != null) { 1136de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mPackageName = otherOptions.mPackageName; 1146de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1156de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn if (otherOptions.mIsCustomAnimation) { 1166de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mIsCustomAnimation = true; 1176de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mCustomEnterResId = otherOptions.mCustomEnterResId; 1186de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn mCustomExitResId = otherOptions.mCustomExitResId; 1196de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1206de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1216de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn 1226de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn /** 1236de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Returns the created options as a Bundle, which can be passed to 1246de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * {@link android.content.Context#startActivity(android.content.Intent, android.os.Bundle) 1256de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Context.startActivity(Intent, Bundle)} and related methods. 1266de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * Note that the returned Bundle is still owned by the ActivityOptions 1276de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * object; you must not modify it, but can supply it to the startActivity 1286de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn * methods that take an options Bundle. 1296de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn */ 1306de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn public Bundle toBundle() { 1316de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn Bundle b = new Bundle(); 1326de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn if (mPackageName != null) { 1336de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn b.putString(KEY_PACKAGE_NAME, mPackageName); 1346de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1356de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn if (mIsCustomAnimation) { 1366de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn b.putInt(KEY_ANIM_ENTER_RES_ID, mCustomEnterResId); 1376de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn b.putInt(KEY_ANIM_EXIT_RES_ID, mCustomExitResId); 1386de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1396de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn return b; 1406de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn } 1416de01a9b03ad6f8a1af4a0d893d952caa4b69d39Dianne Hackborn} 142