在Android中切换活动时的动画?

时间:2011-09-29 11:57:51

标签: android animation

在Android中从一个活动切换到另一个活动时,我想要一个动画。我的目标是动画的底部到顶部。

我该怎么做?

4 个答案:

答案 0 :(得分:27)

是的,这是可能的。 check out this question.您必须在动画文件夹中定义动画,而不是使用

覆盖当前动画
overridePendingTransition( R.anim.slide_in_up, R.anim.slide_out_up );

答案 1 :(得分:9)

使用此

转到其他活动时,您可以设置动画
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

如果您通过重写方法

从最后一个活动回到上一个活动,也可以获得相同的动画
@Override
    public void onBackPressed() {
        super.onBackPressed();
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

    }

答案 2 :(得分:0)

一种更好的方法是创建如下所示的样式

<style name="SlideAnimation.Activity" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/slide_from_top</item>
    <item name="android:activityOpenExitAnimation">@anim/slide_to_bottom</item>
    <item name="android:activityCloseEnterAnimation">@anim/slide_from_bottom</item>
    <item name="android:activityCloseExitAnimation">@anim/slide_to_top</item>
</style>

如果要为整个应用程序实现此功能,则可以像be这样在应用程序主题中使用它

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorWhite</item>
    <item name="colorPrimaryDark">@color/colorWhite</item>
    <item name="colorAccent">@color/colorAppBlue</item>
    <item name="android:statusBarColor">@color/colorPrimaryDark</item>
    <item name="android:windowAnimationStyle">@style/SlideAnimation.Activity</item>
</style>

并在如下所示的应用程序标记的清单中声明AppTheme-

<application
    android:name=".MyApp"
    android:allowBackup="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:theme="@style/AppTheme"
     >

如果要用于特定活动,则将主题应用于清单中的该活动。

答案 3 :(得分:-1)

您可以覆盖public boolean onOptionsItemSelected(MenuItem item)功能,然后使用finish(),然后使用overridePendingTransition()
例如,在您的活动中添加以下代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
    case android.R.id.home: // navigation up.
      finish();
      overridePendingTransition(R.anim.ENTER_ANIMATION, R.anim.EXIT_ANIMATION);
      return true;
    case ....: // implementation of other menu items.
  }
  return super.onOptionsItemSelected(item);
}

另一种方法是覆盖public boolean onNavigateUp()函数。但onNavigateUp()仅适用于16级及以上的API。