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;
20d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.ChangeBounds;
21faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.view.View;
22faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.view.ViewGroup;
23d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.Scene;
24d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.TransitionManager;
25faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.widget.Button;
26faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
27faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haasepublic class Reparenting extends Activity {
28faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
29faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    ViewGroup mSceneRoot;
30faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    ViewGroup mContainer1, mContainer2;
31faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
32faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    @Override
33faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    public void onCreate(Bundle savedInstanceState) {
34faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        super.onCreate(savedInstanceState);
35faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        setContentView(R.layout.reparenting);
36faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
3751efddbd3bb304de2dd47fa8cd1114ac555958bbAlan Viverette        ViewGroup container = findViewById(R.id.container);
3851efddbd3bb304de2dd47fa8cd1114ac555958bbAlan Viverette        mContainer1 = findViewById(R.id.container1);
3951efddbd3bb304de2dd47fa8cd1114ac555958bbAlan Viverette        mContainer2 = findViewById(R.id.container2);
40faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        System.out.println("container 1 and 2 " + mContainer1 + ", " + mContainer2);
41faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
42faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        setupButtons(0, mContainer1);
43faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        setupButtons(3, mContainer2);
44faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
45faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        mSceneRoot = container;
46faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    }
47faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
48faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    private void setupButtons(int startIndex, ViewGroup parent) {
49faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        for (int i = startIndex; i < (startIndex + 3); ++i) {
50faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            Button button = new Button(this);
51faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            button.setText(Integer.toString(i));
52faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            button.setOnClickListener(mButtonListener);
53faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            parent.addView(button);
54faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        }
55faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    }
56faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase
57faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    private View.OnClickListener mButtonListener = new View.OnClickListener() {
58faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        @Override
59faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        public void onClick(final View v) {
60faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            Scene newScene = new Scene(mSceneRoot);
61faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            newScene.setEnterAction(new Runnable() {
62faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                @Override
63faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                public void run() {
64faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                    ViewGroup oldParent = (ViewGroup) v.getParent();
65faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                    ViewGroup newParent = oldParent == mContainer1 ? mContainer2 : mContainer1;
66faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                    oldParent.removeView(v);
67faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                    newParent.addView(v);
68faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase                }
69faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            });
70d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase            ChangeBounds reparent = new ChangeBounds();
71faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            reparent.setReparent(true);
72faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase            TransitionManager.go(newScene, reparent);
73faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase        }
74faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase    };
75faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase}
76