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; 20317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakiimport android.support.transition.ArcMotion; 21317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakiimport android.support.transition.ChangeBounds; 22317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakiimport android.support.transition.Transition; 23317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakiimport android.support.transition.TransitionManager; 24317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakiimport android.support.v4.view.animation.FastOutSlowInInterpolator; 25317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakiimport android.view.Gravity; 26317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakiimport android.view.View; 27317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakiimport android.widget.FrameLayout; 28317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 29317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakiimport com.example.android.support.transition.R; 30317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 31317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki/** 32317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki * This demonstrates usage of {@link ArcMotion}. 33317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki */ 34317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Arakipublic class ArcMotionUsage extends TransitionUsageBase { 35317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 36317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki private FrameLayout mRoot; 37317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki private View mTarget; 38317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki private Transition mTransition; 39317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 40317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki @Override 41317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki int getLayoutResId() { 42317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki return R.layout.arc_motion; 43317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki } 44317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 45317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki @Override 46317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki protected void onCreate(Bundle savedInstanceState) { 47317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki super.onCreate(savedInstanceState); 48fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mRoot = findViewById(R.id.root); 49317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTarget = findViewById(R.id.target); 50317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTransition = new ChangeBounds(); 51317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTransition.setPathMotion(new ArcMotion()); 52317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTransition.setInterpolator(new FastOutSlowInInterpolator()); 53317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTransition.setDuration(500); 54317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki findViewById(R.id.move).setOnClickListener(new View.OnClickListener() { 55317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki @Override 56317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki public void onClick(View v) { 57317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki TransitionManager.beginDelayedTransition(mRoot, mTransition); 58317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mTarget.getLayoutParams(); 59317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki if ((lp.gravity & Gravity.START) == Gravity.START) { 60317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki lp.gravity = Gravity.END | Gravity.BOTTOM; 61317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki } else { 62317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki lp.gravity = Gravity.START | Gravity.TOP; 63317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki } 64317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki mTarget.setLayoutParams(lp); 65317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki } 66317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki }); 67317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki } 68317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki 69317d4bb802dbd80c9ddf1382e037769e58dff919Yuichi Araki} 70