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;
20642a5dcf3012f0f3012324cffe7cb41b602487c7Yuichi Arakiimport android.support.transition.ArcMotion;
2150ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport android.support.transition.ChangeTransform;
2250ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport android.support.transition.TransitionManager;
23642a5dcf3012f0f3012324cffe7cb41b602487c7Yuichi Arakiimport android.support.v4.view.animation.FastOutSlowInInterpolator;
2450ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport android.view.LayoutInflater;
2550ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport android.view.View;
2650ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport android.widget.FrameLayout;
2750ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport android.widget.LinearLayout;
2850ce74b0963de66b294761c045428562d946b65aYuichi Araki
2950ce74b0963de66b294761c045428562d946b65aYuichi Arakiimport com.example.android.support.transition.R;
3050ce74b0963de66b294761c045428562d946b65aYuichi Araki
3150ce74b0963de66b294761c045428562d946b65aYuichi Araki/**
3250ce74b0963de66b294761c045428562d946b65aYuichi Araki * This demonstrates basic usage of the ChangeTransform Transition.
3350ce74b0963de66b294761c045428562d946b65aYuichi Araki */
3450ce74b0963de66b294761c045428562d946b65aYuichi Arakipublic class ChangeTransformUsage extends TransitionUsageBase {
3550ce74b0963de66b294761c045428562d946b65aYuichi Araki
3650ce74b0963de66b294761c045428562d946b65aYuichi Araki    private LinearLayout mRoot;
3750ce74b0963de66b294761c045428562d946b65aYuichi Araki    private FrameLayout mContainer1;
3850ce74b0963de66b294761c045428562d946b65aYuichi Araki    private FrameLayout mContainer2;
3950ce74b0963de66b294761c045428562d946b65aYuichi Araki    private ChangeTransform mChangeTransform;
4050ce74b0963de66b294761c045428562d946b65aYuichi Araki
4150ce74b0963de66b294761c045428562d946b65aYuichi Araki    @Override
4250ce74b0963de66b294761c045428562d946b65aYuichi Araki    int getLayoutResId() {
4350ce74b0963de66b294761c045428562d946b65aYuichi Araki        return R.layout.change_transform;
4450ce74b0963de66b294761c045428562d946b65aYuichi Araki    }
4550ce74b0963de66b294761c045428562d946b65aYuichi Araki
4650ce74b0963de66b294761c045428562d946b65aYuichi Araki    @Override
4750ce74b0963de66b294761c045428562d946b65aYuichi Araki    protected void onCreate(Bundle savedInstanceState) {
4850ce74b0963de66b294761c045428562d946b65aYuichi Araki        super.onCreate(savedInstanceState);
4950ce74b0963de66b294761c045428562d946b65aYuichi Araki        mChangeTransform = new ChangeTransform();
50642a5dcf3012f0f3012324cffe7cb41b602487c7Yuichi Araki        mChangeTransform.setInterpolator(new FastOutSlowInInterpolator());
51642a5dcf3012f0f3012324cffe7cb41b602487c7Yuichi Araki        mChangeTransform.setPathMotion(new ArcMotion());
52fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        mRoot = findViewById(R.id.root);
53fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        mContainer1 = findViewById(R.id.container_1);
54fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        mContainer2 = findViewById(R.id.container_2);
5550ce74b0963de66b294761c045428562d946b65aYuichi Araki        findViewById(R.id.toggle).setOnClickListener(new View.OnClickListener() {
5650ce74b0963de66b294761c045428562d946b65aYuichi Araki            @Override
5750ce74b0963de66b294761c045428562d946b65aYuichi Araki            public void onClick(View v) {
5850ce74b0963de66b294761c045428562d946b65aYuichi Araki                TransitionManager.beginDelayedTransition(mRoot, mChangeTransform);
5950ce74b0963de66b294761c045428562d946b65aYuichi Araki                toggle();
6050ce74b0963de66b294761c045428562d946b65aYuichi Araki            }
6150ce74b0963de66b294761c045428562d946b65aYuichi Araki        });
6250ce74b0963de66b294761c045428562d946b65aYuichi Araki        showRedSquare(mContainer1);
6350ce74b0963de66b294761c045428562d946b65aYuichi Araki    }
6450ce74b0963de66b294761c045428562d946b65aYuichi Araki
6550ce74b0963de66b294761c045428562d946b65aYuichi Araki    void toggle() {
6650ce74b0963de66b294761c045428562d946b65aYuichi Araki        if (mContainer2.getChildCount() > 0) {
6750ce74b0963de66b294761c045428562d946b65aYuichi Araki            mContainer2.removeAllViews();
6850ce74b0963de66b294761c045428562d946b65aYuichi Araki            showRedSquare(mContainer1);
6950ce74b0963de66b294761c045428562d946b65aYuichi Araki        } else {
7050ce74b0963de66b294761c045428562d946b65aYuichi Araki            mContainer1.removeAllViews();
7150ce74b0963de66b294761c045428562d946b65aYuichi Araki            showRedSquare(mContainer2);
7250ce74b0963de66b294761c045428562d946b65aYuichi Araki            mContainer2.getChildAt(0).setRotation(45);
7350ce74b0963de66b294761c045428562d946b65aYuichi Araki        }
7450ce74b0963de66b294761c045428562d946b65aYuichi Araki    }
7550ce74b0963de66b294761c045428562d946b65aYuichi Araki
7650ce74b0963de66b294761c045428562d946b65aYuichi Araki    private void showRedSquare(FrameLayout container) {
7750ce74b0963de66b294761c045428562d946b65aYuichi Araki        final View view = LayoutInflater.from(this)
7850ce74b0963de66b294761c045428562d946b65aYuichi Araki                .inflate(R.layout.red_square, container, false);
7950ce74b0963de66b294761c045428562d946b65aYuichi Araki        container.addView(view);
8050ce74b0963de66b294761c045428562d946b65aYuichi Araki    }
8150ce74b0963de66b294761c045428562d946b65aYuichi Araki
8250ce74b0963de66b294761c045428562d946b65aYuichi Araki}
83