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