忍者ブログ

アンドロイドのあれこれ

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/

translateアニメーションの定義
<!-- 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
NAME
TITLE
MAIL (非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS (コメント編集に必須です)
SECRET
管理人のみ閲覧できます
 
PR
© Android Advent
powered by 忍者ツールズ / 忍者ブログ / [PR]