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 */ 166ebe3de331efd00ba23bc4191d4a82cfa4c39160Chet Haase 17d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haasepackage android.transition; 18faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 19faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.animation.Animator; 20faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.animation.ObjectAnimator; 21faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.view.View; 22faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haaseimport android.view.ViewGroup; 23faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 24faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase/** 25faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * This transition captures the rotation property of targets before and after 26faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase * the scene change and animates any changes. 27d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase * 28d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase * @hide 29faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase */ 30faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haasepublic class Rotate extends Transition { 31faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 32faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase private static final String PROPNAME_ROTATION = "android:rotate:rotation"; 33faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 34faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase @Override 35d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase public void captureStartValues(TransitionValues transitionValues) { 36d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase transitionValues.values.put(PROPNAME_ROTATION, transitionValues.view.getRotation()); 37d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase } 38d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase 39d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase @Override 40d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase public void captureEndValues(TransitionValues transitionValues) { 41d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase transitionValues.values.put(PROPNAME_ROTATION, transitionValues.view.getRotation()); 42faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } 43faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase 44faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase @Override 45d82c8ac4db7091d2e976af4c89a1734465d20cd2Chet Haase public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, 46faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase TransitionValues endValues) { 47faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase if (startValues == null || endValues == null) { 48faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase return null; 49faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } 50faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase final View view = endValues.view; 51faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase float startRotation = (Float) startValues.values.get(PROPNAME_ROTATION); 52faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase float endRotation = (Float) endValues.values.get(PROPNAME_ROTATION); 53faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase if (startRotation != endRotation) { 542ea7f8b9c5f903050d42c1af57406bf528979f45Chet Haase view.setRotation(startRotation); 55faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase return ObjectAnimator.ofFloat(view, View.ROTATION, 56faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase startRotation, endRotation); 57faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } 58faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase return null; 59faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase } 60faebd8f0795b7d275fb4e503533c8c0c4a9acc21Chet Haase} 61