Wie ändere ich alle Aktivitätsübergänge gleichzeitig in der Android-Anwendung?

Lesezeit: 6 Minuten

Ich weiß, dass ich den Aktivitätsübergang mit dem folgenden Code direkt nach startActivity() oder finish() ändern kann

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

Aber wenn ich zehn Aktivitäten in meiner App habe, muss ich das zehnmal machen; und es ist ziemlich schwer zu ändern. Ich frage mich also, ob es eine Möglichkeit gibt, den Übergang für alle Aktivitäten innerhalb der Anwendung gleichzeitig festzulegen. Gibt es eine entsprechende Konfiguration in AndroidManifest.xml?

Vielen Dank!

Benutzer-Avatar
gianpi

Sie möchten zuerst eine erstellen <style> in res/styles.xml wie folgt:

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

Dann können Sie den Stil in derselben Datei auf ein Design anwenden:

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

Und schließlich wenden Sie das Thema auf Ihre Aktivitäten im Manifest an:

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

Sehen Sie sich diese Links als Referenz an:

  • Es klappt! Eigentlich ändere ich ein wenig: <style name="CustomAnimationActivity" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/activity_open_enter</item> <item name="android:activityOpenExitAnimation">@anim/activity_open_exit</item> <item name="android:activityCloseEnterAnimation">@anim/activity_close_enter</item> <item name="android:activityCloseExitAnimation">@anim/activity_close_exit</item> </style>

    – General Liu

    30. November 2011 um 6:10 Uhr


  • @DavidLiu, die offenen Animationen sehen so aus, als würden sie funktionieren, aber die geschlossenen Animationen wirken sich nicht aus.

    – Etienne Lawlor

    4. April 2014 um 17:39 Uhr

  • @GenLiu kannst du mir deine XML-Beispiele zeigen? Ich kann zum Beispiel den Unterschied zwischen openexit und close enter nicht erkennen.

    – Renan Bandeira

    9. Januar 2015 um 3:15 Uhr

  • Danke für die tolle Antwort, hat mir sehr geholfen!

    – JPM

    12. August 2015 um 21:28 Uhr

  • Funktioniert bei mir, muss ich aber löschen parent="android:Theme.Translucent", sonst geht es nicht. Vielen Dank.

    – li2

    7. Juli 2016 um 7:05 Uhr

Ich weiß, dass dies beantwortet wurde, aber hier ist, was ich in meinem getan habe. Wir unterstützen immer noch API 14, daher fehlen einige Animationen, die ich von API 22 in das Projekt ziehen musste (slide_in_right, slide_out_left). Was dies bewirkt, ist, die Bildschirme einzuschieben, wenn Sie eine neue Aktivität öffnen, und die schließende Aktivität nach links zu schieben. Wenn Sie zurück drücken, wird es dann das Gegenteil tun, indem es den vorherigen Bildschirm von links verschiebt und den aktuellen Bildschirm nach rechts schließt.

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

  • Es stammt direkt aus der API 22-Bibliothek, laden Sie einfach die Quelle für API 22 herunter und es befindet sich im Animationsordner.

    – JPM

    10. Oktober 2016 um 4:16 Uhr

  • sehr einfache und einfachste Möglichkeit, Bildschirmübergänge durchzuführen, vielen Dank 🙂

    – Android ist alles für mich

    5. Oktober 2018 um 6:19 Uhr

Meine Lösung ist meistens wie die JPM-Antwort. Aber hier ist eine zusätzliche Datei, die Sie möglicherweise benötigen.

<!-- 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>

Erstellen Sie einen Animationsordner unter dem res-Ordner und erstellen Sie dann diese vier Animationsdateien:

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>

  • das funktioniert überhaupt nicht, zumindest nicht auf android 6 (huawei p8)

    – qkx

    6. März 2017 um 11:18 Uhr

  • Es funktioniert reibungslos in meinem Huawei gPlay mini (Android 6) und Nexus 9 (Android 7). Bitte führen Sie dieses Projekt aus: github.com/ShohanAhmed/…

    – Shohan Ahmed Sijan

    7. März 2017 um 5:01 Uhr

  • Ich habe ein Problem untersucht, und Sie haben teilweise Recht. Es läuft auch auf meinem Telefon, aber nur, wenn Sie die Absicht (um neue Aktivitäten anzuzeigen) von Aktivität aufrufen. Wenn Sie eine Aktivität aus dem Widget öffnen und Pending Intent verwenden möchten, funktioniert es dort nicht. In diesem Fall besteht die einzige Möglichkeit darin, Animationen programmgesteuert im Code festzulegen, wie ich es ursprünglich erwähnt habe ….

    – qkx

    8. März 2017 um 7:42 Uhr


Schritt 1: Erstellen Sie eine Basisaktivität

Schritt 2: Erweitern Sie Ihre gesamte Aktivität auf diese Basisaktivität

Schritt 3: Fügen Sie in Ihrer Basisaktivität den folgenden Code hinzu

@Override
protected void onStart() {
super.onStart();
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}

@Override
protected void onPause() {
super.onPause();
if (isFinishing()) {
    overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
 }
}

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>

1054780cookie-checkWie ändere ich alle Aktivitätsübergänge gleichzeitig in der Android-Anwendung?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy