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