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