1faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase/*
2faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * Copyright (C) 2013 The Android Open Source Project
3faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase *
4faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * Licensed under the Apache License, Version 2.0 (the "License");
5faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * you may not use this file except in compliance with the License.
6faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * You may obtain a copy of the License at
7faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase *
8faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase *      http://www.apache.org/licenses/LICENSE-2.0
9faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase *
10faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * Unless required by applicable law or agreed to in writing, software
11faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * distributed under the License is distributed on an "AS IS" BASIS,
12faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * See the License for the specific language governing permissions and
14faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * limitations under the License.
15faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase */
16faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haasepackage com.android.transitiontests;
17faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
18faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.app.Activity;
19faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.os.Bundle;
20faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.view.LayoutInflater;
21faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.view.View;
22faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.view.ViewGroup;
23d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.Scene;
24d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.Transition;
25faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.widget.Button;
26faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.widget.LinearLayout;
27d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.TransitionManager;
28faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
29faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
30faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport java.util.HashMap;
31faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
32faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haasepublic class UniqueIds extends Activity {
33faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    ViewGroup mSceneRoot;
34faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    static Scene mCurrentScene;
35faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    TransitionManager mTransitionManager = null;
36faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    HashMap<Button, ToggleScene> mSceneMap = new HashMap<Button, ToggleScene>();
37faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
38faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    @Override
39faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    public void onCreate(Bundle savedInstanceState) {
40faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        super.onCreate(savedInstanceState);
41faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        setContentView(R.layout.unique_id_test);
42faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
43faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        LinearLayout container = (LinearLayout) findViewById(R.id.container);
44faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        LayoutInflater inflater = getLayoutInflater();
45faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        Button button = (Button) inflater.inflate(R.layout.button_template, null);
46faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        container.addView(button);
47faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        ToggleScene scene = new ToggleScene(container, button);
48faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        mSceneMap.put(button, scene);
49faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        button = (Button) inflater.inflate(R.layout.button_template, null);
50faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        container.addView(button);
51faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        scene = new ToggleScene(container, button);
52faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        mSceneMap.put(button, scene);
53faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    }
54faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
55faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    public void sendMessage(View view) {
56faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        mSceneMap.get(view).changeToScene();
57faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    }
58faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
59faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    class ToggleScene {
60faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        Scene mScene;
61faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        Transition mTransition;
62faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        Button mButton;
63faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
64faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        ToggleScene(ViewGroup rootView, Button button) {
65faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mScene = new Scene(rootView);
66faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mButton = button;
67faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            mScene.setEnterAction(new Runnable() {
68faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                @Override
69faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                public void run() {
70faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                    if (mButton.getLeft() == 0) {
71faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                        mButton.offsetLeftAndRight(500);
72faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                    } else {
73faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                        int width = mButton.getWidth();
74faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                        mButton.setLeft(0);
75faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                        mButton.setRight(width);
76faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                    }
77faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                }
78faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            });
79faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        }
80faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
81faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        void changeToScene() {
82faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            TransitionManager.go(mScene);
83faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        }
84faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    }
85faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase}
86