From d540e6e0b75d77cb77b35711a23d1c84c316336f Mon Sep 17 00:00:00 2001 From: Craig Mautner Date: Thu, 21 Feb 2013 18:02:50 -0800 Subject: [PATCH] Add demo for rotation animation. New feature in App/Activity/Rotation Animation for overriding default rotation animation with crossfade or jumpcut. Change-Id: I3cb3cdb26770e6c7d040f4492eb02149af73b757 --- samples/ApiDemos/AndroidManifest.xml | 8 ++ .../res/layout/rotation_animation.xml | 74 +++++++++++++++ samples/ApiDemos/res/values/strings.xml | 12 +++ .../android/apis/app/RotationAnimation.java | 91 +++++++++++++++++++ 4 files changed, 185 insertions(+) create mode 100644 samples/ApiDemos/res/layout/rotation_animation.xml create mode 100644 samples/ApiDemos/src/com/example/android/apis/app/RotationAnimation.java diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml index e911cd555..2211e3d38 100644 --- a/samples/ApiDemos/AndroidManifest.xml +++ b/samples/ApiDemos/AndroidManifest.xml @@ -244,6 +244,14 @@ + + + + + + + diff --git a/samples/ApiDemos/res/layout/rotation_animation.xml b/samples/ApiDemos/res/layout/rotation_animation.xml new file mode 100644 index 000000000..4ca08195c --- /dev/null +++ b/samples/ApiDemos/res/layout/rotation_animation.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml index 085b94fde..f673e31fc 100644 --- a/samples/ApiDemos/res/values/strings.xml +++ b/samples/ApiDemos/res/values/strings.xml @@ -387,6 +387,8 @@ This is the last in a sequence of four Activities. Bring the second in front + App/Activity/Rotation Animation + App/Menu/Inflate from XML Select a menu resource and press the menu key. If you want to choose another menu resource, go back and re-run this activity. @@ -1156,6 +1158,16 @@ Type here: Ok Cancel + + Change the default rotation animation from rotating to fade or jumpcut. + Only works if FLAG_FULLSCREEN is set and there are no dialogs up. + Try rotating with and without the Power Off dialog visible. + + FULLSCREEN + Rotation Animation: + ROTATE + XFADE + JUMPCUT Text View 1 Button 1 Text View 2 diff --git a/samples/ApiDemos/src/com/example/android/apis/app/RotationAnimation.java b/samples/ApiDemos/src/com/example/android/apis/app/RotationAnimation.java new file mode 100644 index 000000000..44bd1e6fa --- /dev/null +++ b/samples/ApiDemos/src/com/example/android/apis/app/RotationAnimation.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.apis.app; + +import com.example.android.apis.R; + +import android.app.Activity; +import android.os.Bundle; +import android.view.Window; +import android.view.WindowManager; +import android.view.WindowManager.LayoutParams; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.RadioGroup; + + +public class RotationAnimation extends Activity { + + private int mRotationAnimation = LayoutParams.ROTATION_ANIMATION_ROTATE; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setRotationAnimation(mRotationAnimation); + + setContentView(R.layout.rotation_animation); + + ((CheckBox)findViewById(R.id.windowFullscreen)).setOnCheckedChangeListener( + new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + setFullscreen(isChecked); + } + } + ); + + ((RadioGroup)findViewById(R.id.rotation_radio_group)).setOnCheckedChangeListener( + new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + switch (checkedId) { + default: + case R.id.rotate: + mRotationAnimation = LayoutParams.ROTATION_ANIMATION_ROTATE; + break; + case R.id.crossfade: + mRotationAnimation = LayoutParams.ROTATION_ANIMATION_CROSSFADE; + break; + case R.id.jumpcut: + mRotationAnimation = LayoutParams.ROTATION_ANIMATION_JUMPCUT; + break; + } + setRotationAnimation(mRotationAnimation); + } + } + ); + } + + private void setFullscreen(boolean on) { + Window win = getWindow(); + WindowManager.LayoutParams winParams = win.getAttributes(); + if (on) { + winParams.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; + } else { + winParams.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; + } + win.setAttributes(winParams); + } + + private void setRotationAnimation(int rotationAnimation) { + Window win = getWindow(); + WindowManager.LayoutParams winParams = win.getAttributes(); + winParams.rotationAnimation = rotationAnimation; + win.setAttributes(winParams); + } +}