1733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki/*
2733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki * Copyright (C) 2016 The Android Open Source Project
3733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki *
4733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki * Licensed under the Apache License, Version 2.0 (the "License");
5733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki * you may not use this file except in compliance with the License.
6733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki * You may obtain a copy of the License at
7733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki *
8733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki *      http://www.apache.org/licenses/LICENSE-2.0
9733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki *
10733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki * Unless required by applicable law or agreed to in writing, software
11733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki * distributed under the License is distributed on an "AS IS" BASIS,
12733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki * See the License for the specific language governing permissions and
14733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki * limitations under the License.
15733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki */
16733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
17733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Arakipackage android.support.transition;
18733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
19733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Arakiimport android.animation.Animator;
20733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Arakiimport android.view.ViewGroup;
21733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
22733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Arakiclass VisibilityIcs extends TransitionIcs implements VisibilityImpl {
23733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
24733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    @Override
25733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    public void init(TransitionInterface external, Object internal) {
26733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        mExternalTransition = external;
27733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        if (internal == null) {
28733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki            mTransition = new VisibilityWrapper((VisibilityInterface) external);
29733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        } else {
30733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki            mTransition = (VisibilityPort) internal;
31733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        }
32733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    }
33733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
34733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    @Override
35733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    public boolean isVisible(TransitionValues values) {
36733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        return ((VisibilityPort) mTransition).isVisible(values);
37733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    }
38733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
39733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    @Override
40733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    public Animator onAppear(ViewGroup sceneRoot, TransitionValues startValues, int startVisibility,
41733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki            TransitionValues endValues, int endVisibility) {
42733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        return ((VisibilityPort) mTransition).onAppear(sceneRoot, startValues, startVisibility,
43733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki                endValues, endVisibility);
44733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    }
45733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
46733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    @Override
47733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    public Animator onDisappear(ViewGroup sceneRoot, TransitionValues startValues,
48733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki            int startVisibility, TransitionValues endValues, int endVisibility) {
49733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        return ((VisibilityPort) mTransition).onDisappear(sceneRoot, startValues, startVisibility,
50733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki                endValues, endVisibility);
51733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    }
52733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
53733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    private static class VisibilityWrapper extends VisibilityPort {
54733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
55733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        private VisibilityInterface mVisibility;
56733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
57733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        VisibilityWrapper(VisibilityInterface visibility) {
58733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki            mVisibility = visibility;
59733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        }
60733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
61733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        @Override
62733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        public void captureStartValues(TransitionValues transitionValues) {
63733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki            mVisibility.captureStartValues(transitionValues);
64733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        }
65733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
66733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        @Override
67733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        public void captureEndValues(TransitionValues transitionValues) {
68733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki            mVisibility.captureEndValues(transitionValues);
69733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        }
70733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
71733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        @Override
72733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
73733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki                TransitionValues endValues) {
74733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki            return mVisibility.createAnimator(sceneRoot, startValues, endValues);
75733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        }
76733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
77733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        @Override
78733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        public boolean isVisible(TransitionValues values) {
79733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki            return mVisibility.isVisible(values);
80733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        }
81733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
82733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        @Override
83733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        public Animator onAppear(ViewGroup sceneRoot, TransitionValues startValues,
84733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki                int startVisibility,
85733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki                TransitionValues endValues, int endVisibility) {
86733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki            return mVisibility.onAppear(sceneRoot, startValues, startVisibility,
87733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki                    endValues, endVisibility);
88733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        }
89733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
90733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        @Override
91733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        public Animator onDisappear(ViewGroup sceneRoot, TransitionValues startValues,
92733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki                int startVisibility, TransitionValues endValues, int endVisibility) {
93733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki            return mVisibility.onDisappear(sceneRoot, startValues, startVisibility,
94733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki                    endValues, endVisibility);
95733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki        }
96733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
97733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki    }
98733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki
99733b5aaadf1b1f5dc3038876dbfbabb79f649b03Yuichi Araki}
100