it-swarm.com.de

Schaltaktivitäten ohne Animation

Wie kann ich das Intent-Flag FLAG_ACTIVITY_NO_ANIMATION In der AndroidManifest-Datei richtig verwenden? Ich nehme an, mein Problem ist trivial, aber ich kann kein gutes Beispiel oder eine Lösung dafür finden.

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

Der Komplikator meldet jedoch keinen Fehler, aber data ist nicht korrekt. Ich möchte nur die Animation deaktivieren, falls zwischen Aktivitäten gewechselt werden soll. Ich kann getWindow().setWindowAnimations(0); in onCreate oder onResume verwenden, aber flag ist besser, nicht wahr?

Ich kann auch in Code verwenden:

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

Ich möchte dieses Flag jedoch in Android Manifest) verwenden, um die Animation auch für den Fall zu deaktivieren, dass von der zweiten zur ersten Aktivität zurückgekehrt wird.

151
woyaru

Sie können einen Stil erstellen,

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

und setze es als Thema für deine Aktivität im Manifest:

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

Sie können auch einen Stil definieren, um benutzerdefinierte Eingangs- und Ausgangsanimationen festzulegen. http://developer.Android.com/reference/Android/R.attr.html#windowEnterAnimation

248
Santosh

Wenn Ihr Kontext eine Aktivität ist, können Sie overridePendingTransition aufrufen:

Rufen Sie unmittelbar nach einer der Varianten von startActivity (Intent) oder finish auf, um eine explizite Übergangsanimation anzugeben, die als Nächstes ausgeführt werden soll.

Also programmatisch:

this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);
173
eshirazi

Versuchen Sie diesen Code,

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

Sie können dies auch einfach in allen Aktivitäten tun, von denen Sie nicht wechseln möchten:

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

Ich mag diesen Ansatz, weil Sie sich nicht mit dem Stil Ihrer Aktivität anlegen müssen.

23
TastyLemons

Dies ist kein Anwendungsbeispiel oder eine Erklärung zur Verwendung von FLAG_ACTIVITY_NO_ANIMATION, es wird jedoch beantwortet, wie die Activity -Umschaltanimation deaktiviert wird, wie im Fragentitel angegeben:

Android, wie kann ich den Wipe-Effekt deaktivieren, wenn ich eine neue Aktivität starte?

5
Phil

Hier ist eine einzeilige Lösung, die für nur minSdkVersion 14 was du in dich einfügen solltest res/styles.xml:

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

wie so:

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

Prost!

2
user1506104

erstelle deinen eigenen Stil über Android: Theme

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

Dann benutze es in diesem Manifest:

<activity Android:name=".MainActivity"
    Android:theme="@style/noAnimationStyle">
</activity>
1
goyo

Die Linie im Designstil funktioniert einwandfrei, ersetzt jedoch die Animation durch einen weißen Bildschirm. Besonders auf einem langsameren Telefon - es ist wirklich nervig. Wenn Sie also einen sofortigen Übergang wünschen, können Sie dies im Designstil verwenden:

<item name="Android:windowAnimationStyle">@null</item>
<item name="Android:windowDisablePreview">true</item>
0