如何在Android应用程序中一次更改所有活动转换?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Android应用程序中一次更改所有活动转换?相关的知识,希望对你有一定的参考价值。

我知道我可以在startActivity()或finish()之后使用以下代码更改活动转换

activity.overridePendingTransition(R.anim.activity_close_enter, R.anim.activity_close_exit);

但如果我在我的应用程序中有十个活动,我必须这样做十次;并且很难修改。所以我想知道是否有办法立即为应用程序中的所有活动设置转换。 androidManifest.xml中是否有相应的配置?

谢谢!

答案

您想首先在res / styles.xml中创建一个<style>,如下所示:

    <style name="YourAnimation.Activity" parent="@android:style/Animation.Activity"> 
       <item name="android:windowEnterAnimation">@anim/your_in_down</item>
       <item name="android:windowExitAnimation">@anim/your_out_down</item>
    </style>

然后,您可以将样式应用于同一文件中的主题:

    <style name="YourTheme" parent="android:Theme.Translucent">
       ...
       <item name="android:windowAnimationStyle">@style/YourAnimation.Activity</item>
    </style>

最后将主题应用于清单中的活动:

    <activity
        android:name=".YourActivity"
        android:theme="@style/YourTheme" />

请查看以下链接以供参考:

另一答案

我知道这已经得到了回答,但这就是我在我的所做的事情。我们仍然支持API 14,因此缺少一些动画,我必须从API 22(sli​​de_in_right,slide_out_left)进入项目。这样做是为了在打开新活动时在屏幕中滑动并将结束的活动向左滑动。当您向后按时它将执行相反的操作,从左侧滑动前一个屏幕并向右关闭当前屏幕。

<style name="YourTheme" parent="android:Theme.Translucent">
   ...
    <item name="android:windowAnimationStyle">@style/YourAnimation.Activity</item>
</style>

<style name="YourAnimation.Activity" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
    <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
    <item name="android:activityCloseEnterAnimation">@android:anim/slide_in_left</item>
    <item name="android:activityCloseExitAnimation">@android:anim/slide_out_right</item>
</style>
另一答案

我的解决方案大多像JPM的回答。但是这里有一些您可能需要的附加文件。

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorPrimary</item>
    <item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item>

</style>

<style name="CustomActivityAnimation" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
    <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
    <item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item>
    <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>

在res文件夹下创建anim文件夹,然后创建这四个动画文件:

slide_in_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="-100%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>
另一答案
My solution is mostly like of others...
 <style name="YourAnimation.Activity" parent="@android:style/Animation.Activity">
        <item name="android:windowEnterAnimation">@anim/slidefromright</item>
        <item name="android:windowExitAnimation">@anim/slidetoright</item>
    </style>
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowAnimationStyle">@style/YourAnimation.Activity </item>
    </style>


</resources>

以上是关于如何在Android应用程序中一次更改所有活动转换?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode:如何在应用程序中一次更改所有字体?

如何在mysql中一次更改多个表?

在 Python 中一次更改多个元素

Android Fragment 创建了两次方向更改

如何将随机森林分类器应用于所有数据集,在 python 中一次一小部分

在 C# 中一次计算活动线程