web-dev-qa-db-ja.com

アニメーションでアクティビティを開始する

カスタムの遷移アニメーションでアクティビティを開始しようとしています。これを行うためにこれまでに見つけた唯一の方法(前のアクティビティでonPendingTransition()を使用せずに)は、アクティビティでカスタムテーマを使用し、activityOpenEnterAnimation、taskOpenEnterAnimation、windowEnterAnimation、またはwindowAnimationStyleを定義してアニメーションを設定することです。しかし、これらの属性はどれも私にとってはうまくいきません。いくつかの実験により、次の結果が得られました

WindowAnimationStyle属性をactivityOpenEnterAnimation、taskOpenEnterAnimation、windowEnterAnimation、またはwindowAnimationStyleの値を定義するカスタムスタイルに設定すると、アクティビティの開始時に発生するデフォルトの遷移アニメーションを削除できます。指定された実際の値を使用して遷移アニメーションを表示しませんが、少なくともデフォルトのアニメーションは表示されません。

参照ドキュメント here によると、

ActivityOpenEnterAnimationを使用して、アクティビティの開始時にアニメーションを定義できるはずです。しかし、今のところ成功していません。

何か案は?

40
adityad

私は現在の私のプロジェクトでこれを使用していますが、基本的にはとても簡単です。次のように、styles.xmlで新しいアニメーションスタイルを定義します。

<!-- just defines top layer "Animation" -->
<style name="Animation" />

<!-- the animations must have been defined in your "anim" folder, of course -->
<style name="Animation.MyAwesomeAnimation" parent="Android:style/Animation.Activity">
    <item name="Android:activityOpenEnterAnimation">@anim/myawesomeanimation_enter</item>
    <item name="Android:activityOpenExitAnimation">@anim/hold_long</item>
    <item name="Android:activityCloseEnterAnimation">@anim/hold_long</item>
    <item name="Android:activityCloseExitAnimation">@anim/myawesomeanimation_exit</item>
</style>

次に、このスタイルをテーマ(themes.xml)に設定します。

<style name="Theme.MyAwesomeTheme" parent="Theme.Default">
    <item name="Android:windowAnimationStyle">@style/Animation.MyAwesomeAnimation</item>
</style>

そして、これらのテーマをAndroidManifest.xmlで好きなすべてのアクティビティに設定するだけです。

<activity
    Android:name=".MyAwesomeActivity"
    Android:theme="@style/Theme.MyAwesomeTheme" />

さあ、アクティビティアニメーションをお楽しみください! :-D

87
mreichelt