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