1572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu/* 2572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * Copyright (C) 2014 The Android Open Source Project 3572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * 4572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * in compliance with the License. You may obtain a copy of the License at 6572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * 7572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * http://www.apache.org/licenses/LICENSE-2.0 8572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * 9572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * Unless required by applicable law or agreed to in writing, software distributed under the License 10572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * or implied. See the License for the specific language governing permissions and limitations under 12572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * the License. 13572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu */ 14572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gupackage android.support.v17.leanback.transition; 15572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 168e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikasimport static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP; 178e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas 18572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Guimport android.content.Context; 19572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Guimport android.os.Build; 20c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viveretteimport android.support.annotation.RestrictTo; 21572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Guimport android.support.v17.leanback.R; 22c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viverette 23572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu/** 24572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * Helper class to load Leanback specific transition. 25572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * @hide 26572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu */ 278e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas@RestrictTo(LIBRARY_GROUP) 28572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gupublic class LeanbackTransitionHelper { 29572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 30c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viverette interface LeanbackTransitionHelperVersion { 31c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viverette Object loadTitleInTransition(Context context); 32c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viverette Object loadTitleOutTransition(Context context); 33572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } 34572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 35572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu /* 36572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * Kitkat does not allow load custom transition from resource, calling 37572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * LeanbackTransitionHelperKitKat to build custom transition in code. 38572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu */ 39572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu static class LeanbackTransitionHelperKitKatImpl implements LeanbackTransitionHelperVersion { 40572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 41572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu @Override 428403619efebe94666c0615c3fc85080a303acf80Dake Gu public Object loadTitleInTransition(Context context) { 43572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu return LeanbackTransitionHelperKitKat.loadTitleInTransition(context); 44572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } 45572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 46572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu @Override 478403619efebe94666c0615c3fc85080a303acf80Dake Gu public Object loadTitleOutTransition(Context context) { 48572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu return LeanbackTransitionHelperKitKat.loadTitleOutTransition(context); 49572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } 50572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } 51572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 52572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu /* 53572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu * Load transition from resource or just return stub for API17. 54572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu */ 55572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu static class LeanbackTransitionHelperDefault implements LeanbackTransitionHelperVersion { 56572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 57572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu @Override 588403619efebe94666c0615c3fc85080a303acf80Dake Gu public Object loadTitleInTransition(Context context) { 598403619efebe94666c0615c3fc85080a303acf80Dake Gu return TransitionHelper.loadTransition(context, R.transition.lb_title_in); 60572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } 61572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 62572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu @Override 638403619efebe94666c0615c3fc85080a303acf80Dake Gu public Object loadTitleOutTransition(Context context) { 648403619efebe94666c0615c3fc85080a303acf80Dake Gu return TransitionHelper.loadTransition(context, R.transition.lb_title_out); 65572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } 66572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } 67572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 68572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu static LeanbackTransitionHelperVersion sImpl; 69572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 70572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu static { 71572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu if (Build.VERSION.SDK_INT >= 21) { 72572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu sImpl = new LeanbackTransitionHelperDefault(); 73572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } else if (Build.VERSION.SDK_INT >= 19) { 74572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu sImpl = new LeanbackTransitionHelperKitKatImpl(); 75572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } else { 76572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu // Helper will create a stub object for transition in this case. 77572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu sImpl = new LeanbackTransitionHelperDefault(); 78572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } 79572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } 80572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 818403619efebe94666c0615c3fc85080a303acf80Dake Gu static public Object loadTitleInTransition(Context context) { 828403619efebe94666c0615c3fc85080a303acf80Dake Gu return sImpl.loadTitleInTransition(context); 83572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } 84572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu 858403619efebe94666c0615c3fc85080a303acf80Dake Gu static public Object loadTitleOutTransition(Context context) { 868403619efebe94666c0615c3fc85080a303acf80Dake Gu return sImpl.loadTitleOutTransition(context); 87572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu } 88572ed31d757c2635ea0a5cdd7ec8a33cd16f77b7Dake Gu} 89