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.View; 21faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.view.ViewGroup; 22d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.Scene; 23faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.widget.TextView; 24d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.Fade; 25d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.Recolor; 26d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.Slide; 27d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.Transition; 28d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.TransitionSet; 29d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haaseimport android.transition.TransitionManager; 30faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 31faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 32faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haasepublic class LoginActivity extends Activity { 33faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase ViewGroup mSceneRoot; 34faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase Scene mCurrentScene; 35faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase TransitionManager mTransitionManager; 36faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase Scene mLoginScene, mPasswordScene, mIncorrectPasswordScene, mSuccessScene, mUsernameTakenScene, 37faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mNewUserScene; 38faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 39faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase @Override 40faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase public void onCreate(Bundle savedInstanceState) { 41faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase super.onCreate(savedInstanceState); 42faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase setContentView(R.layout.activity_login); 4351efddbd3bb304de2dd47fa8cd1114ac555958bbAlan Viverette View container = findViewById(R.id.container); 44faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mSceneRoot = (ViewGroup) container.getParent(); 45faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 46d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase mLoginScene = Scene.getSceneForLayout(mSceneRoot, R.layout.activity_login, this); 47d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase mPasswordScene = Scene.getSceneForLayout(mSceneRoot, R.layout.login_password, this); 48d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase mIncorrectPasswordScene = Scene.getSceneForLayout(mSceneRoot, R.layout.incorrect_password, this); 49d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase mUsernameTakenScene = Scene.getSceneForLayout(mSceneRoot, R.layout.username_taken, this); 50d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase mSuccessScene = Scene.getSceneForLayout(mSceneRoot, R.layout.success, this); 51d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase mNewUserScene = Scene.getSceneForLayout(mSceneRoot, R.layout.new_user, this); 52faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 53faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mTransitionManager = new TransitionManager(); 54faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 55faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase // Custom transitions in/out of NewUser screen - slide in the 2nd password UI 56d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase TransitionSet slider = new TransitionSet(); 57ff58f92a0a77ad849ba714b5adac96790eca0048Chet Haase slider.addTransition(new Slide().addTarget(R.id.retype).addTarget(R.id.retypeEdit)); 58ff58f92a0a77ad849ba714b5adac96790eca0048Chet Haase slider.addTransition(new Recolor().addTarget(R.id.password). 59ff58f92a0a77ad849ba714b5adac96790eca0048Chet Haase addTarget(R.id.passwordEdit)); 60d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase slider.addTransition(new Fade()); 61faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mTransitionManager.setTransition(mLoginScene, mNewUserScene, slider); 62faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mTransitionManager.setTransition(mPasswordScene, mNewUserScene, slider); 63faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mTransitionManager.setTransition(mNewUserScene, mLoginScene, slider); 64faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mTransitionManager.setTransition(mNewUserScene, mPasswordScene, slider); 65faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 66faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase // Custom transitions with recoloring password field 67ff58f92a0a77ad849ba714b5adac96790eca0048Chet Haase Transition colorizer = new Recolor().addTarget(R.id.password). 68ff58f92a0a77ad849ba714b5adac96790eca0048Chet Haase addTarget(R.id.passwordEdit); 69faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mTransitionManager.setTransition(mLoginScene, mPasswordScene, colorizer); 70faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mTransitionManager.setTransition(mPasswordScene, mLoginScene, colorizer); 71faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 72faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mCurrentScene = mLoginScene; 73faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } 74faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 75faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase public void applyScene(Scene scene) { 76faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mTransitionManager.transitionTo(scene); 77faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase mCurrentScene = scene; 78faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } 79faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 80faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase public void sendMessage(View view) { 81faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase TextView textView = (TextView) view; 82faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase CharSequence text = textView.getText(); 83faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase if (text.equals("Cancel")) { 84faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase applyScene(mLoginScene); 85faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } else if (text.equals("Submit")) { 86faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase if (mCurrentScene == mLoginScene) { 87faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase applyScene(mPasswordScene); 88faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } else if (mCurrentScene == mPasswordScene) { 89faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase applyScene(Math.random() < .5 ? mSuccessScene : mIncorrectPasswordScene); 90faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } else if (mCurrentScene == mNewUserScene) { 91faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase applyScene(Math.random() < .5 ? mSuccessScene : mUsernameTakenScene); 92faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } 93faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } else if (text.equals("New User?")) { 94faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase applyScene(mNewUserScene); 95faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } else if (text.equals("Okay")) { 96faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase if (mCurrentScene == mIncorrectPasswordScene) { 97faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase applyScene(mPasswordScene); 98faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } else { // username taken scene 99faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase applyScene(mNewUserScene); 100faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } 101faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } else if (text.equals("Reset")) { 102faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase applyScene(mLoginScene); 103faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } 104faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } 105faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase} 106