アンドロイドのあれこれ
[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
           
         
  