41

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

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

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

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

何か案は?

4

1 に答える 1

90

私はこれを私の現在のプロジェクトで使用しています。基本的には非常に単純です。次のように、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

于 2011-02-16T15:32:32.193 に答える