1317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki/* 2317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * Copyright (C) 2017 The Android Open Source Project 3317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * 4317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * Licensed under the Apache License, Version 2.0 (the "License"); 5317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * you may not use this file except in compliance with the License. 6317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * You may obtain a copy of the License at 7317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * 8317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * http://www.apache.org/licenses/LICENSE-2.0 9317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * 10317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * Unless required by applicable law or agreed to in writing, software 11317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * distributed under the License is distributed on an "AS IS" BASIS, 12317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * See the License for the specific language governing permissions and 14317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * limitations under the License. 15317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki */ 16317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 17317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakipackage com.example.android.support.transition.widget; 18317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 19317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakiimport android.os.Bundle; 20def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.view.Gravity; 21def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.view.View; 22def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.widget.FrameLayout; 23def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas 24def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.interpolator.view.animation.FastOutSlowInInterpolator; 25ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.transition.ArcMotion; 26ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.transition.ChangeBounds; 27ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.transition.Transition; 28ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.transition.TransitionManager; 29317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 30317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakiimport com.example.android.support.transition.R; 31317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 32317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki/** 33317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * This demonstrates usage of {@link ArcMotion}. 34317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki */ 35317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakipublic class ArcMotionUsage extends TransitionUsageBase { 36317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 37317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki private FrameLayout mRoot; 38317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki private View mTarget; 39317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki private Transition mTransition; 40317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 41317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki @Override 42317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki int getLayoutResId() { 43317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki return R.layout.arc_motion; 44317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki } 45317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 46317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki @Override 47317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki protected void onCreate(Bundle savedInstanceState) { 48317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki super.onCreate(savedInstanceState); 49fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mRoot = findViewById(R.id.root); 50317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTarget = findViewById(R.id.target); 51317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTransition = new ChangeBounds(); 52317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTransition.setPathMotion(new ArcMotion()); 53317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTransition.setInterpolator(new FastOutSlowInInterpolator()); 54317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTransition.setDuration(500); 55317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki findViewById(R.id.move).setOnClickListener(new View.OnClickListener() { 56317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki @Override 57317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki public void onClick(View v) { 58317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki TransitionManager.beginDelayedTransition(mRoot, mTransition); 59317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mTarget.getLayoutParams(); 60317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki if ((lp.gravity & Gravity.START) == Gravity.START) { 61317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki lp.gravity = Gravity.END | Gravity.BOTTOM; 62317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki } else { 63317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki lp.gravity = Gravity.START | Gravity.TOP; 64317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki } 65317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTarget.setLayoutParams(lp); 66317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki } 67317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki }); 68317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki } 69317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 70317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki} 71