18158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki/*
28158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * Copyright (C) 2017 The Android Open Source Project
38158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki *
48158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * Licensed under the Apache License, Version 2.0 (the "License");
58158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * you may not use this file except in compliance with the License.
68158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * You may obtain a copy of the License at
78158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki *
88158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki *      http://www.apache.org/licenses/LICENSE-2.0
98158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki *
108158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * Unless required by applicable law or agreed to in writing, software
118158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * distributed under the License is distributed on an "AS IS" BASIS,
128158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * See the License for the specific language governing permissions and
148158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki * limitations under the License.
158158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki */
168158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
178158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakipackage android.support.transition;
188158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
1950ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport static junit.framework.TestCase.assertFalse;
2050ce74b0963de66b294761c045428562d946b65aYuichi Araki
218158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport static org.junit.Assert.assertEquals;
228158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport static org.junit.Assert.assertNotNull;
238158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport static org.junit.Assert.assertTrue;
248158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport static org.junit.Assert.fail;
258158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
268158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.content.Context;
27142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Arakiimport android.graphics.Path;
28142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Arakiimport android.graphics.PathMeasure;
298158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.support.annotation.NonNull;
308158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.support.test.filters.MediumTest;
318158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.support.transition.test.R;
328158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.util.AttributeSet;
33ae4925aede60914bcca5ed47d7ce868ae14313a2Yuichi Arakiimport android.view.Gravity;
348158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.widget.ImageView;
358158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport android.widget.TextView;
368158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
378158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport org.junit.Test;
388158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
398158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakiimport java.util.List;
408158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
418158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki@MediumTest
428158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Arakipublic class TransitionInflaterTest extends BaseTest {
438158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
448158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    @Test
458158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    public void testInflationConstructors() throws Throwable {
468158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        TransitionInflater inflater = TransitionInflater.from(rule.getActivity());
478158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        Transition transition = inflater.inflateTransition(R.transition.transition_constructors);
488158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertTrue(transition instanceof TransitionSet);
498158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        TransitionSet set = (TransitionSet) transition;
50913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        assertEquals(10, set.getTransitionCount());
518158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
528158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
538158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    @Test
548158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    public void testInflation() {
558158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        TransitionInflater inflater = TransitionInflater.from(rule.getActivity());
568158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        verifyFadeProperties(inflater.inflateTransition(R.transition.fade));
577bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        verifyChangeBoundsProperties(inflater.inflateTransition(R.transition.change_bounds));
58ae4925aede60914bcca5ed47d7ce868ae14313a2Yuichi Araki        verifySlideProperties(inflater.inflateTransition(R.transition.slide));
594c904b38c763179727b9b5ea7a80454630545663Yuichi Araki        verifyExplodeProperties(inflater.inflateTransition(R.transition.explode));
60fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        verifyChangeImageTransformProperties(
61fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                inflater.inflateTransition(R.transition.change_image_transform));
6250ce74b0963de66b294761c045428562d946b65aYuichi Araki        verifyChangeTransformProperties(inflater.inflateTransition(R.transition.change_transform));
63f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki        verifyChangeClipBoundsProperties(
64f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki                inflater.inflateTransition(R.transition.change_clip_bounds));
658158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        verifyAutoTransitionProperties(inflater.inflateTransition(R.transition.auto_transition));
66913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        verifyChangeScrollProperties(inflater.inflateTransition(R.transition.change_scroll));
678158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        verifyTransitionSetProperties(inflater.inflateTransition(R.transition.transition_set));
688158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        verifyCustomTransitionProperties(
698158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki                inflater.inflateTransition(R.transition.custom_transition));
708158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        verifyTargetIds(inflater.inflateTransition(R.transition.target_ids));
718158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        verifyTargetNames(inflater.inflateTransition(R.transition.target_names));
728158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        verifyTargetClass(inflater.inflateTransition(R.transition.target_classes));
73142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        verifyArcMotion(inflater.inflateTransition(R.transition.arc_motion));
74142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        verifyCustomPathMotion(inflater.inflateTransition(R.transition.custom_path_motion));
75142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        verifyPatternPathMotion(inflater.inflateTransition(R.transition.pattern_path_motion));
768158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
778158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
788158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    // TODO: Add test for TransitionManager
798158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
808158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    private void verifyFadeProperties(Transition transition) {
818158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertTrue(transition instanceof Fade);
828158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        Fade fade = (Fade) transition;
838158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals(Fade.OUT, fade.getMode());
848158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
858158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
867bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    private void verifyChangeBoundsProperties(Transition transition) {
877bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        assertTrue(transition instanceof ChangeBounds);
887bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        ChangeBounds changeBounds = (ChangeBounds) transition;
897bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        assertTrue(changeBounds.getResizeClip());
907bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    }
917bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki
92ae4925aede60914bcca5ed47d7ce868ae14313a2Yuichi Araki    private void verifySlideProperties(Transition transition) {
93ae4925aede60914bcca5ed47d7ce868ae14313a2Yuichi Araki        assertTrue(transition instanceof Slide);
94ae4925aede60914bcca5ed47d7ce868ae14313a2Yuichi Araki        Slide slide = (Slide) transition;
95ae4925aede60914bcca5ed47d7ce868ae14313a2Yuichi Araki        assertEquals(Gravity.TOP, slide.getSlideEdge());
96ae4925aede60914bcca5ed47d7ce868ae14313a2Yuichi Araki    }
97ae4925aede60914bcca5ed47d7ce868ae14313a2Yuichi Araki
984c904b38c763179727b9b5ea7a80454630545663Yuichi Araki    private void verifyExplodeProperties(Transition transition) {
994c904b38c763179727b9b5ea7a80454630545663Yuichi Araki        assertTrue(transition instanceof Explode);
1004c904b38c763179727b9b5ea7a80454630545663Yuichi Araki        Visibility visibility = (Visibility) transition;
1014c904b38c763179727b9b5ea7a80454630545663Yuichi Araki        assertEquals(Visibility.MODE_IN, visibility.getMode());
1024c904b38c763179727b9b5ea7a80454630545663Yuichi Araki    }
1034c904b38c763179727b9b5ea7a80454630545663Yuichi Araki
104fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    private void verifyChangeImageTransformProperties(Transition transition) {
105fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        assertTrue(transition instanceof ChangeImageTransform);
106fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    }
107fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
10850ce74b0963de66b294761c045428562d946b65aYuichi Araki    private void verifyChangeTransformProperties(Transition transition) {
10950ce74b0963de66b294761c045428562d946b65aYuichi Araki        assertTrue(transition instanceof ChangeTransform);
11050ce74b0963de66b294761c045428562d946b65aYuichi Araki        ChangeTransform changeTransform = (ChangeTransform) transition;
11150ce74b0963de66b294761c045428562d946b65aYuichi Araki        assertFalse(changeTransform.getReparent());
11250ce74b0963de66b294761c045428562d946b65aYuichi Araki        assertFalse(changeTransform.getReparentWithOverlay());
11350ce74b0963de66b294761c045428562d946b65aYuichi Araki    }
11450ce74b0963de66b294761c045428562d946b65aYuichi Araki
115f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    private void verifyChangeClipBoundsProperties(Transition transition) {
116f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki        assertTrue(transition instanceof ChangeClipBounds);
117f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    }
118f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
1198158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    private void verifyAutoTransitionProperties(Transition transition) {
1208158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertTrue(transition instanceof AutoTransition);
1218158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
1228158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
123913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki    private void verifyChangeScrollProperties(Transition transition) {
124913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        assertTrue(transition instanceof ChangeScroll);
125913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki    }
126913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki
1278158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    private void verifyTransitionSetProperties(Transition transition) {
1288158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertTrue(transition instanceof TransitionSet);
1298158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        TransitionSet set = (TransitionSet) transition;
1308158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals(TransitionSet.ORDERING_SEQUENTIAL, set.getOrdering());
1318158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals(2, set.getTransitionCount());
1328158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertTrue(set.getTransitionAt(0) instanceof ChangeBounds);
1338158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertTrue(set.getTransitionAt(1) instanceof Fade);
1348158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
1358158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
1368158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    private void verifyCustomTransitionProperties(Transition transition) {
1378158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertTrue(transition instanceof CustomTransition);
1388158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
1398158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
1408158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    private void verifyTargetIds(Transition transition) {
1418158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        List<Integer> targets = transition.getTargetIds();
1428158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertNotNull(targets);
1438158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals(2, targets.size());
1448158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals(R.id.hello, (int) targets.get(0));
1458158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals(R.id.world, (int) targets.get(1));
1468158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
1478158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
1488158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    private void verifyTargetNames(Transition transition) {
1498158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        List<String> targets = transition.getTargetNames();
1508158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertNotNull(targets);
1518158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals(2, targets.size());
1528158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals("hello", targets.get(0));
1538158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals("world", targets.get(1));
1548158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
1558158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
1568158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    private void verifyTargetClass(Transition transition) {
1578158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        List<Class> targets = transition.getTargetTypes();
1588158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertNotNull(targets);
1598158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals(2, targets.size());
1608158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals(TextView.class, targets.get(0));
1618158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        assertEquals(ImageView.class, targets.get(1));
1628158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
1638158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
164142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki    private void verifyArcMotion(Transition transition) {
165142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertNotNull(transition);
166142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        PathMotion motion = transition.getPathMotion();
167142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertNotNull(motion);
168142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertTrue(motion instanceof ArcMotion);
169142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        ArcMotion arcMotion = (ArcMotion) motion;
170142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertEquals(1f, arcMotion.getMinimumVerticalAngle(), 0.01f);
171142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertEquals(2f, arcMotion.getMinimumHorizontalAngle(), 0.01f);
172142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertEquals(53f, arcMotion.getMaximumAngle(), 0.01f);
173142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki    }
174142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki
175142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki    private void verifyCustomPathMotion(Transition transition) {
176142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertNotNull(transition);
177142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        PathMotion motion = transition.getPathMotion();
178142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertNotNull(motion);
179142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertTrue(motion instanceof CustomPathMotion);
180142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki    }
181142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki
182142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki    private void verifyPatternPathMotion(Transition transition) {
183142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertNotNull(transition);
184142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        PathMotion motion = transition.getPathMotion();
185142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertNotNull(motion);
186142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertTrue(motion instanceof PatternPathMotion);
187142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        PatternPathMotion pattern = (PatternPathMotion) motion;
188142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        Path path = pattern.getPatternPath();
189142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        PathMeasure measure = new PathMeasure(path, false);
190142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        assertEquals(200f, measure.getLength(), 0.1f);
191142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki    }
192142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki
1938158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    public static class CustomTransition extends Transition {
1948158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        public CustomTransition() {
1958158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki            fail("Default constructor was not expected");
1968158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        }
1978158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
1988158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        @SuppressWarnings("unused") // This constructor is used in XML
1998158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        public CustomTransition(Context context, AttributeSet attrs) {
2008158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki            super(context, attrs);
2018158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        }
2028158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
2038158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        @Override
2048158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        public void captureStartValues(@NonNull TransitionValues transitionValues) {
2058158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        }
2068158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
2078158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        @Override
2088158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        public void captureEndValues(@NonNull TransitionValues transitionValues) {
2098158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        }
2108158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
2118158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
212142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki    public static class CustomPathMotion extends PathMotion {
213142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        public CustomPathMotion() {
214142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki            fail("default constructor shouldn't be called.");
215142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        }
216142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki
217142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        public CustomPathMotion(Context context, AttributeSet attrs) {
218142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki            super(context, attrs);
219142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        }
220142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki
221142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        @Override
222142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        public Path getPath(float startX, float startY, float endX, float endY) {
223142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki            return null;
224142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki        }
225142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki    }
226142a5654b5eff546b6fa1b9b938896356ff9b03bYuichi Araki
2278158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    public static class InflationFade extends Fade {
2288158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        public InflationFade(Context context, AttributeSet attrs) {
2298158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki            super(context, attrs);
2308158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        }
2318158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
2328158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
2338158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    public static class InflationChangeBounds extends ChangeBounds {
2348158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        public InflationChangeBounds(Context context, AttributeSet attrs) {
2358158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki            super(context, attrs);
2368158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        }
2378158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
2388158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
2397bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    public static class InflationSlide extends Slide {
2407bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        public InflationSlide(Context context, AttributeSet attrs) {
2417bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki            super(context, attrs);
2427bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        }
2437bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    }
2447bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki
2458158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    public static class InflationTransitionSet extends TransitionSet {
2468158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        public InflationTransitionSet(Context context, AttributeSet attrs) {
2478158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki            super(context, attrs);
2488158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        }
2498158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
2508158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
2517bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    public static class InflationChangeImageTransform extends ChangeImageTransform {
2527bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        public InflationChangeImageTransform(Context context, AttributeSet attrs) {
2537bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki            super(context, attrs);
2547bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        }
2557bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    }
2567bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki
2577bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    public static class InflationChangeTransform extends ChangeTransform {
2587bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        public InflationChangeTransform(Context context, AttributeSet attrs) {
2597bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki            super(context, attrs);
2607bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        }
2617bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    }
2627bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki
2638158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    public static class InflationAutoTransition extends AutoTransition {
2648158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        public InflationAutoTransition(Context context, AttributeSet attrs) {
2658158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki            super(context, attrs);
2668158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki        }
2678158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki    }
2688158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki
2697bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    public static class InflationChangeClipBounds extends ChangeClipBounds {
2707bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        public InflationChangeClipBounds(Context context, AttributeSet attrs) {
2717bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki            super(context, attrs);
2727bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        }
2737bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    }
2747bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki
275913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki    public static class InflationChangeScroll extends ChangeScroll {
276913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        public InflationChangeScroll(Context context, AttributeSet attrs) {
277913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki            super(context, attrs);
278913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki        }
279913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki    }
280913cfb35ee8a1fc3223c4f98bd1e22182b035186Yuichi Araki
2817bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    public static class InflationExplode extends Explode {
2827bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        public InflationExplode(Context context, AttributeSet attrs) {
2837bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki            super(context, attrs);
2847bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki        }
2857bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki    }
2867bd2fbcdcfeb9014c16fd78446c34a4eef489626Yuichi Araki
2878158051cdfef95fc1f22b56bba93b9c610f5ecb1Yuichi Araki}
288