アンドロイドのあれこれ
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
translate、alpha、scaleの画面遷移アニメーション
普段あまりアニメーションをうまく使っていないので練習+メモとして簡単な画面遷移アニメーションを紹介します。
画面遷移、ActivityのOpen、Closeまたはアニメーションタイプなどは以下のサイトで参考しました。
http://developer.android.com/intl/ja/guide/topics/resources/animation-resource.html
http://www.adamrocker.com/blog/289/activity_open_close_animation.html
http://android.roof-balcony.com/resource/animation/
画面遷移、ActivityのOpen、Closeまたはアニメーションタイプなどは以下のサイトで参考しました。
http://developer.android.com/intl/ja/guide/topics/resources/animation-resource.html
http://www.adamrocker.com/blog/289/activity_open_close_animation.html
http://android.roof-balcony.com/resource/animation/
translateアニメーションの定義
alphaアニメーションの定義
scaleアニメーションの定義
スタイルの定義
テーマの定義
作成したテーマをActivityに設定する
<!-- res/anim/activity_trans_open_enter.xml -->
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="100%"
android:toYDelta="0%"
android:fillAfter="true"
android:fillEnabled="true"
android:duration="@string/activity_animation_duration"
android:interpolator="@android:anim/accelerate_interpolator"
/>
<!-- res/anim/activity_trans_open_exit.xml -->
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0%"
android:toYDelta="-100%"
android:fillAfter="true"
android:fillEnabled="true"
android:duration="@string/activity_animation_duration"
android:interpolator="@android:anim/accelerate_interpolator"
/>
<!-- res/anim/activity_trans_close_enter.xml -->
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="-100%"
android:toYDelta="0%"
android:fillAfter="true"
android:fillEnabled="true"
android:duration="@string/activity_animation_duration"
android:interpolator="@android:anim/accelerate_interpolator"
/>
<!-- res/anim/activity_trans_close_exit.xml -->
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0%"
android:toYDelta="100%"
android:fillAfter="true"
android:fillEnabled="true"
android:duration="@string/activity_animation_duration"
android:interpolator="@android:anim/accelerate_interpolator"
/>
alphaアニメーションの定義
<!-- res/anim/activity_alpha_enter.xml -->
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="@string/activity_animation_duration"
android:interpolator="@android:anim/accelerate_interpolator"
/>
<!-- res/anim/activity_alpha_exit.xml -->
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="@string/activity_animation_duration"
android:interpolator="@android:anim/accelerate_interpolator"
/>
scaleアニメーションの定義
<!-- res/anim/activity_scale_enter.xml -->
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="@string/activity_animation_duration"
android:interpolator="@android:anim/accelerate_interpolator"
/>
<!-- res/anim/activity_scale_exit.xml -->
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="@string/activity_animation_duration"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
/>
スタイルの定義
<!-- res/values/styles.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Animation" parent="android:Animation" />
<style name="Animation.Activity.Trans" parent="android:Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/activity_trans_open_enter</item>
<item name="android:activityOpenExitAnimation">@anim/activity_trans_open_exit</item>
<item name="android:activityCloseEnterAnimation">@anim/activity_trans_close_enter</item>
<item name="android:activityCloseExitAnimation">@anim/activity_trans_close_exit</item>
</style>
<style name="Animation.Activity.Alpha" parent="android:Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/activity_alpha_enter</item>
<item name="android:activityOpenExitAnimation">@anim/activity_alpha_exit</item>
<item name="android:activityCloseEnterAnimation">@anim/activity_alpha_enter</item>
<item name="android:activityCloseExitAnimation">@anim/activity_alpha_exit</item>
</style>
<style name="Animation.Activity.Scale" parent="android:Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/activity_scale_enter</item>
<item name="android:activityOpenExitAnimation">@anim/activity_scale_exit</item>
<item name="android:activityCloseEnterAnimation">@anim/activity_scale_enter</item>
<item name="android:activityCloseExitAnimation">@anim/activity_scale_exit</item>
</style>
</resources>
テーマの定義
<!-- res/values/themes.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme1" parent="android:Theme">
<item name="android:windowAnimationStyle">@style/Animation.Activity.Trans</item>
</style>
<style name="MyTheme2" parent="android:Theme">
<item name="android:windowAnimationStyle">@style/Animation.Activity.Alpha</item>
</style>
<style name="MyTheme3" parent="android:Theme">
<item name="android:windowAnimationStyle">@style/Animation.Activity.Scale</item>
</style>
</resources>
作成したテーマをActivityに設定する
<!-- AndroidManifest.xml -->
....
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar"
>
<activity
android:label="@string/app_name"
android:name=".MainActivity"
android:theme="@style/MyTheme1"
>
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:theme="@style/MyTheme1"
>
</activity>
</application>
....
COMMENT