androidでActivityが切り替わるときのアニメーションを変える
activityが切り替わるときにアニメーションをさせたくなくなった。
■実装
res/values/style.xml
以下のようにテーマを定義する。
<resource>
<style name="NoAnimationTheme" parent="android:Theme">
<item name="android:windowAnimationStyle">@style/Animation.Activity</item>
</style>
<style name="Animation.Activity" parent="android:Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/activity_open_enter</item>
<item name="android:activityOpenExitAnimation">@anim/activity_open_exit</item>
<item name="android:activityCloseEnterAnimation">@anim/activity_close_enter</item>
<item name="android:activityCloseExitAnimation">@anim/activity_close_exit</item>
</style>
</resource>
anim/activity_open_enter.xml
startActivityで開くActivityのanimation。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:fromXDelta="100%"
android:toXDelta="0%"
android:duration="0"
android:fillAfter="true"
android:fillEnabled="true"/>
</set>
anim/activity_open_exit.xml
startActivityで閉じるActivityのanimation。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:fromXDelta="0%"
android:toXDelta="-100%"
android:duration="0"
android:fillAfter="true"
android:fillEnabled="true"/>
</set>
anim/activity_close_exit.xml
finishで閉じるActivityのanimation。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:fromXDelta="0%"
android:toXDelta="100%"
android:duration="0"
android:fillAfter="true"
android:fillEnabled="true"/>
</set>
anim/activity_close_open.xml
finishで開くActivityのanimation。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:fromXDelta="-100%"
android:toXDelta="0%"
android:duration="0"
android:fillAfter="true"
android:fillEnabled="true"/>
</set>
参考
上述の内容などは以下のような参考サイトに情報がある。
AndroidManifest.xml
アプリケーション全体に適用する
以下のようにapplicationタグに記述することでアプリケーション全体に変更したアニメーションを適用できる。
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/NoAnimationTheme">
アクティビティに適用する
以下のようにactivityタグに記述することで単一のアクティビティにのみ変更したアニメーションを適用できる。
<activity
android:label="@string/app_name"
android:name=".MainActivity">
</activity>
■応用
上述の方法だと特定の条件下でのみアニメーションを変えるといったことができない。条件によってanimationを変えたい場合は、以下のようにすることで対応できる。
public class MainActivity extends Activity {
/**
* 起動時に実行される
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.NoAnimationTheme);// super.onCreateの前に実行する必要がある
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
TrackBack URL :
Comments (0)