150ce74b0963de66b294761c045428562d946b65aYuichi Araki/*
250ce74b0963de66b294761c045428562d946b65aYuichi Araki * Copyright (C) 2017 The Android Open Source Project
350ce74b0963de66b294761c045428562d946b65aYuichi Araki *
450ce74b0963de66b294761c045428562d946b65aYuichi Araki * Licensed under the Apache License, Version 2.0 (the "License");
550ce74b0963de66b294761c045428562d946b65aYuichi Araki * you may not use this file except in compliance with the License.
650ce74b0963de66b294761c045428562d946b65aYuichi Araki * You may obtain a copy of the License at
750ce74b0963de66b294761c045428562d946b65aYuichi Araki *
850ce74b0963de66b294761c045428562d946b65aYuichi Araki *      http://www.apache.org/licenses/LICENSE-2.0
950ce74b0963de66b294761c045428562d946b65aYuichi Araki *
1050ce74b0963de66b294761c045428562d946b65aYuichi Araki * Unless required by applicable law or agreed to in writing, software
1150ce74b0963de66b294761c045428562d946b65aYuichi Araki * distributed under the License is distributed on an "AS IS" BASIS,
1250ce74b0963de66b294761c045428562d946b65aYuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1350ce74b0963de66b294761c045428562d946b65aYuichi Araki * See the License for the specific language governing permissions and
1450ce74b0963de66b294761c045428562d946b65aYuichi Araki * limitations under the License.
1550ce74b0963de66b294761c045428562d946b65aYuichi Araki */
1650ce74b0963de66b294761c045428562d946b65aYuichi Araki
1750ce74b0963de66b294761c045428562d946b65aYuichi Arakipackage com.example.android.support.transition.widget;
1850ce74b0963de66b294761c045428562d946b65aYuichi Araki
1950ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport android.os.Bundle;
2050ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport android.view.LayoutInflater;
2150ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport android.view.View;
2250ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport android.widget.FrameLayout;
2350ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport android.widget.LinearLayout;
2450ce74b0963de66b294761c045428562d946b65aYuichi Araki
25def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.interpolator.view.animation.FastOutSlowInInterpolator;
26def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.transition.ArcMotion;
27def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.transition.ChangeTransform;
28def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.transition.TransitionManager;
29def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas
3050ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport com.example.android.support.transition.R;
3150ce74b0963de66b294761c045428562d946b65aYuichi Araki
3250ce74b0963de66b294761c045428562d946b65aYuichi Araki/**
3350ce74b0963de66b294761c045428562d946b65aYuichi Araki * This demonstrates basic usage of the ChangeTransform Transition.
3450ce74b0963de66b294761c045428562d946b65aYuichi Araki */
3550ce74b0963de66b294761c045428562d946b65aYuichi Arakipublic class ChangeTransformUsage extends TransitionUsageBase {
3650ce74b0963de66b294761c045428562d946b65aYuichi Araki
3750ce74b0963de66b294761c045428562d946b65aYuichi Araki    private LinearLayout mRoot;
3850ce74b0963de66b294761c045428562d946b65aYuichi Araki    private FrameLayout mContainer1;
3950ce74b0963de66b294761c045428562d946b65aYuichi Araki    private FrameLayout mContainer2;
4050ce74b0963de66b294761c045428562d946b65aYuichi Araki    private ChangeTransform mChangeTransform;
4150ce74b0963de66b294761c045428562d946b65aYuichi Araki
4250ce74b0963de66b294761c045428562d946b65aYuichi Araki    @Override
4350ce74b0963de66b294761c045428562d946b65aYuichi Araki    int getLayoutResId() {
4450ce74b0963de66b294761c045428562d946b65aYuichi Araki        return R.layout.change_transform;
4550ce74b0963de66b294761c045428562d946b65aYuichi Araki    }
4650ce74b0963de66b294761c045428562d946b65aYuichi Araki
4750ce74b0963de66b294761c045428562d946b65aYuichi Araki    @Override
4850ce74b0963de66b294761c045428562d946b65aYuichi Araki    protected void onCreate(Bundle savedInstanceState) {
4950ce74b0963de66b294761c045428562d946b65aYuichi Araki        super.onCreate(savedInstanceState);
5050ce74b0963de66b294761c045428562d946b65aYuichi Araki        mChangeTransform = new ChangeTransform();
51642a5dcf3012f0f3012324cffe7cb41b602487c7Yuichi Araki        mChangeTransform.setInterpolator(new FastOutSlowInInterpolator());
52642a5dcf3012f0f3012324cffe7cb41b602487c7Yuichi Araki        mChangeTransform.setPathMotion(new ArcMotion());
53fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        mRoot = findViewById(R.id.root);
54fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        mContainer1 = findViewById(R.id.container_1);
55fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        mContainer2 = findViewById(R.id.container_2);
5650ce74b0963de66b294761c045428562d946b65aYuichi Araki        findViewById(R.id.toggle).setOnClickListener(new View.OnClickListener() {
5750ce74b0963de66b294761c045428562d946b65aYuichi Araki            @Override
5850ce74b0963de66b294761c045428562d946b65aYuichi Araki            public void onClick(View v) {
5950ce74b0963de66b294761c045428562d946b65aYuichi Araki                TransitionManager.beginDelayedTransition(mRoot, mChangeTransform);
6050ce74b0963de66b294761c045428562d946b65aYuichi Araki                toggle();
6150ce74b0963de66b294761c045428562d946b65aYuichi Araki            }
6250ce74b0963de66b294761c045428562d946b65aYuichi Araki        });
6350ce74b0963de66b294761c045428562d946b65aYuichi Araki        showRedSquare(mContainer1);
6450ce74b0963de66b294761c045428562d946b65aYuichi Araki    }
6550ce74b0963de66b294761c045428562d946b65aYuichi Araki
6650ce74b0963de66b294761c045428562d946b65aYuichi Araki    void toggle() {
6750ce74b0963de66b294761c045428562d946b65aYuichi Araki        if (mContainer2.getChildCount() > 0) {
6850ce74b0963de66b294761c045428562d946b65aYuichi Araki            mContainer2.removeAllViews();
6950ce74b0963de66b294761c045428562d946b65aYuichi Araki            showRedSquare(mContainer1);
7050ce74b0963de66b294761c045428562d946b65aYuichi Araki        } else {
7150ce74b0963de66b294761c045428562d946b65aYuichi Araki            mContainer1.removeAllViews();
7250ce74b0963de66b294761c045428562d946b65aYuichi Araki            showRedSquare(mContainer2);
7350ce74b0963de66b294761c045428562d946b65aYuichi Araki            mContainer2.getChildAt(0).setRotation(45);
7450ce74b0963de66b294761c045428562d946b65aYuichi Araki        }
7550ce74b0963de66b294761c045428562d946b65aYuichi Araki    }
7650ce74b0963de66b294761c045428562d946b65aYuichi Araki
7750ce74b0963de66b294761c045428562d946b65aYuichi Araki    private void showRedSquare(FrameLayout container) {
7850ce74b0963de66b294761c045428562d946b65aYuichi Araki        final View view = LayoutInflater.from(this)
7950ce74b0963de66b294761c045428562d946b65aYuichi Araki                .inflate(R.layout.red_square, container, false);
8050ce74b0963de66b294761c045428562d946b65aYuichi Araki        container.addView(view);
8150ce74b0963de66b294761c045428562d946b65aYuichi Araki    }
8250ce74b0963de66b294761c045428562d946b65aYuichi Araki
8350ce74b0963de66b294761c045428562d946b65aYuichi Araki}
84