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