首页 文章

没有动画的切换活动

提问于
浏览
147

如何在AndroidManifest文件中正确使用Intent标志 FLAG_ACTIVITY_NO_ANIMATION ?我认为我的问题是微不足道的,但我找不到好的例子或解决方案 .

<intent-filter>
    <data android:name="android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION" />
</intent-filter>

但是,compliator没有报告错误,但 data 不正确 . 我只想在活动之间切换时禁用动画 . 我可以在onCreate或onResume中使用 getWindow().setWindowAnimations(0); 而不是使用flag是更好的方法,不是吗?

我也可以在代码中使用:

Intent intent = new Intent(v.getContext(), newactivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
getContext().startActivity(intent);

但是我想在Android Manifest中使用这个标志 . 如果从第二个活动返回到第一个活动,也要禁用动画 .

7 回答

  • 5

    你可以创造一种风格,

    <style name="noAnimTheme" parent="android:Theme">
       <item name="android:windowAnimationStyle">@null</item>
    </style>
    

    并将其设置为清单中活动的主题:

    <activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
        </activity>
    

    您还可以定义样式以指定自定义输入和退出动画 . http://developer.android.com/reference/android/R.attr.html#windowEnterAnimation

  • 2

    如果您的上下文是活动,您可以调用 overridePendingTransition

    在startActivity(Intent)的一种风格之后立即调用,或者完成以指定下一步要执行的显式转换动画 .

    所以,以编程方式:

    this.startActivity(new Intent(v.getContext(), newactivity.class));
    this.overridePendingTransition(0, 0);
    
  • 165

    试试这段代码,

    this.startActivity(new Intent(v.getContext(), newactivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
    
  • 19

    您也可以在您不希望转换的所有活动中执行此操作:

    @Override
    public void onPause() {
        super.onPause();
        overridePendingTransition(0, 0);
    }
    

    我喜欢这种方法,因为你不必弄乱你的活动风格 .

  • 1

    这不是一个示例用法或如何使用 FLAG_ACTIVITY_NO_ANIMATION 的解释,但它确实回答了如何禁用 Activity 切换动画,如问题 Headers 中所述:

    Android, how to disable the 'wipe' effect when starting a new activity?

  • 239

    这是一个单行解决方案,适用于 minSdkVersion 14 ,你应该插入 res/styles.xml

    <item name="android:windowAnimationStyle">@null</item>
    

    像这样:

    <resources>
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            ...
            <item name="android:windowAnimationStyle">@null</item>
        </style>
        ...
    </resources>
    

    干杯!

  • 32

    创建自己的风格覆盖android:主题

    <style name="noAnimationStyle" parent="android:Theme">
        <item name="android:windowAnimationStyle">@null</item>
    </style>
    

    然后在清单中使用它,如下所示:

    <activity android:name=".MainActivity"
        android:theme="@style/noAnimationStyle">
    </activity>
    

相关问题