Activiteit slide-in animatie uitschakelen bij het starten van nieuwe activiteit?

Ik heb een activiteit die een andere activiteit start via een klik op de knop. Op nieuwere OS-versies van Android animeert het OS standaard de nieuwe activiteit die van rechts naar links schuift.

Is er een manier om deze animatie uit te schakelen? Ik wil gewoon dat de nieuwe activiteit wordt weergegeven zonder enige vorm van animatie.


Antwoord 1, autoriteit 100%

De vlag FLAG_ACTIVITY_NO_ANIMATIONwerkt prima voor het uitschakelen van de animatie bij het starten van activiteiten.

Als u de soortgelijke animatie wilt uitschakelen die wordt geactiveerd bij het aanroepen van finish()voor een activiteit, dwz dat de animatie in plaats daarvan van rechts naar links schuift, kunt u overridePendingTransition(0, 0)na het aanroepen van finish()en de volgende animatie wordt uitgesloten.

Dit werkt ook op de in-animatie als je overridePendingTransition(0, 0)aanroept nadat je startActivity(...)hebt aangeroepen.


Antwoord 2, autoriteit 89%

IMHO ditantwoord hier lost het probleem op de meest elegante manier op..

Ontwikkelaar moet een stijlmaken,

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

vervolg in manifest stel het in als themavoor activiteit of hele applicatie.

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

Voila! Lekker makkelijk..

P.S. credits aan originele auteur aub


Antwoord 3, autoriteit 19%

Toepassen

startActivity(new Intent(FirstActivity.this,SecondActivity.class));

dan

overridePendingTransition(0, 0);

Hiermee stopt de animatie.


Antwoord 4, autoriteit 15%

Naar mijn mening is het beste antwoord het gebruik van "overridePendingTransition(0, 0);"

om te voorkomen dat u animatie ziet wanneer u Intentvoor een Activitywilt gebruiken:

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

en om de animatie niet te zien wanneer u op de terug-knop drukt Overschrijf de onPause-methode in uw newactivity

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

Antwoord 5, autoriteit 10%

Geef gewoon de vlag Intent.FLAG_ACTIVITY_NO_ANIMATIONop bij het starten


Antwoord 6, autoriteit 8%

Dit werkt voor mij als ik de animatie van activiteiten voltooien uitschakel.

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

Antwoord 7, autoriteit 5%

Ik gebruik 4.4.2, en het aanroepen van overridePendingTransition(0, 0) in onCreate() van de startactiviteit schakelt de startanimatie uit(door overridePendingTransition(0, 0) aan te roepen onmiddellijk na startActivity( ) werkte niet). Zoals opgemerkt in een ander antwoord, schakelt het aanroepen van overridePendingTransition(0, 0) na finish() de afsluitende animatie uit.

Btw, ik ontdekte dat het instellen van de stijl met “android:windowAnimationStyle”>@null (een ander antwoord dat hier wordt genoemd) een crash veroorzaakte toen mijn opstartactiviteit probeerde de titel van de actiebalk in te stellen. Verder debuggen, ontdekte ik dat dit op de een of andere manier ervoor zorgt dat window.hasFeature(Window.FEATURE_ACTION_BAR) faalt in de initActionBar() van de activiteit.


Antwoord 8, autoriteit 4%

FLAG_ACTIVITY_NO_ANIMATION werkt misschien, maar werkte niet voor mij in combinatie met FLAG_ACTIVITY_CLEAR_TASK en FLAG_ACTIVITY_NEW_TASK. Ik zie blijkbaar de animatie voor het maken van een nieuwe taak met een nieuwe activiteitenstapel terwijl ik lateraal naar mijn andere weergaven op het hoogste niveau navigeer.

Wat hier wel werkte, was het aanroepen van “overridePendingTransition(0, 0);” ofwel onmiddellijk na mijn startActivity()-aanroep of de onPause(). Beide manieren werkten, maar als ik het na startActivity() doe, heb ik wat meer controle over wanneer ik animaties wil en wanneer niet.


Antwoord 9

Ik had een soortgelijk probleem waarbij een zwart scherm werd weergegeven bij een glijdende overgang van de ene activiteit naar de andere met behulp van overridependingtransition. en ik volgde de onderstaande weg en het werkte

1) heeft een noanim.xmlgemaakt in de anim-map

<?xml version="1.0" encoding="utf-8"?>
<translate 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_longAnimTime"
    android:fromYDelta="0%p"
    android:toYDelta="0%p" />

en gebruikt

overridePendingTransition(R.drawable.lefttorightanim, R.anim.noanim);

De eerste parameter als mijn originele animatie en de tweede parameter, de exit-animatie als mijn dummy-animatie


Antwoord 10

Om de zwarte achtergrond te vermijden bij het starten van een activiteit die al in de stapel staat, heb ik toegevoegd
overridePendingTransition(0,0)in onStart():

@Override
protected void onStart() {
    overridePendingTransition(0,0);
    super.onStart();
}

Antwoord 11

Om dingen op te helderen:
FLAG_ACTIVITY_NO_ANIMATION (of android:windowAnimationStyle = @null in het thema) werken prima voor beide, zowel binnen als buiten.
Het probleem is dat de enter-animatie controleert of de animatie is ingeschakeld in de ene activiteit en de exit-animatie controleert of de animatie is ingeschakeld voor de andere. Zorg er dus voor dat u het in beide activiteiten uitschakelt.

Other episodes