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