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 回答