it-swarm.com.de

Wie kann ich eine Animation zur Aktivität beenden () hinzufügen

Ich verwende overridePendingTransition für den Zeitpunkt, zu dem meine Aktivität erstellt wird und das funktioniert gut. Ich kann sehen, dass das Einblenden großartig funktioniert. Wenn ich jedoch versuche, das Ende der Aktivität zu animieren, wird immer noch die Vorgabe von rechts nach links ausgeführt.

Ich habe zuerst versucht, die Out-Animation zu definieren, wenn ich mit der Aktivität beginne:

Intent myIntent = new Intent(a, SkdyAlert.class);
    myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    a.startActivity(myIntent);
    if (Android.os.Build.VERSION.SDK_INT > Android.os.Build.VERSION_CODES.DONUT) {
        AnimationHelper.overridePendingTransition(a, R.anim.fadein, R.anim.fadeout);
    }

Dann habe ich es auch gemacht, nachdem ich die Übung beendet habe

okBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            finish();
            if (Android.os.Build.VERSION.SDK_INT > Android.os.Build.VERSION_CODES.DONUT) {
                AnimationHelper.overridePendingTransition(activity, 0, R.anim.fadeout);
            }
        }
    });

Keiner dieser Ansätze wird jedoch die Folie "rechts nach links" für die Ausgangsanimation verhindern. Irgendwelche Ideen, was ich falsch mache?

82
b-ryce

Ich überschreibe den anstehenden Übergang unmittelbar nach dem Aufruf von finish ().

In meinem Fall habe ich es getan, um Übergänge zu vermeiden.

finish();
Details.this.overridePendingTransition(R.anim.nothing,R.anim.nothing);

Ordnung ist wichtig :)

207
Goofyahead

Ich würde vorschlagen, die isFinishing () -Methode zu verwenden, um die Animationen bei onPause zu konfigurieren, anstatt finish () aufzurufen.

@Override
protected void onPause() {
    super.onPause();
    if (isFinishing()){
        overridePendingTransition(R.anim.activity_slide_in, R.anim.activity_slide_out);
    }

}
21
finish();
overridePendingTransition(0, 0);
18
Felipe

Diese Frage wurde bereits beantwortet, aber der effizienteste Weg, eine Animation beim Beenden einer Aktivität zu platzieren, besteht darin, die "finish ()" -Methode der zugehörigen Aktivität zu überschreiben:

@Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.hold, R.anim.slide_out_bottom);
}
18

Ich habe dieses Problem mit diesem Ansatz behoben: 

mit Animation zu öffnen:

 Intent newUser = new Intent(getBaseContext(), NewUserActivity.class);
    startActivity(newUser);
    overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left);

So schließen Sie die Animation:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.slide_out_right,R.anim.slide_in_right);
}
14

Sehen Sie sich das durch ein Thema an. Sie können Eingabeexit-Animationen für Aktivitäten oder die gesamte Anwendung definieren

12
schwiz

Nach der Antwort von @schwiz folgt hier eine Animationsüberschreibung für das integrierte Dialogdesign, in dem ich lokale Slide_up- und Slide_down-Animationen definiert habe. Meine Aktivität legt das Thema MyDialog fest, um diese Übergänge ein- und auszublenden.

<style name="Animation.MyDialog" parent="Android:Animation.Dialog">
    <item name="Android:windowEnterAnimation">@anim/slide_up</item>
    <item name="Android:windowExitAnimation">@anim/slide_down</item>
</style>

<style name="Theme.MyDialog" parent="Android:Theme.Dialog">
    <item name="Android:windowAnimationStyle">@style/Animation.MyDialog</item>
</style>

6
larham1

Verwenden Sie startActivityForResult, um Ihre Kinderaktivität und in onActivityResult () Ihrer Elternaktivität zu starten:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode==REQUEST_YOUR_ACTIVITY) {
        overridePendingTransition(R.anim.parent_appearing_anim, R.anim.child_dissmissing_anim);
    }
    super.onActivityResult(requestCode, resultCode, arg2);
}
5
Chris.Zou
if (getEnterAnimation() > -1 && getExitAnimation() > -1) {
    overridePendingTransition(getEnterAnimation(), getExitAnimation());
} 

wo diese Methoden Animationen von R.anim.YOUR_ANIMATION_XML zurückgeben

fügen Sie diesen Code zuvor in onCreate () ein 

setContentView()

und in Ihrer onPause () vor 

super.onPause()

ich habe versucht, diesen Code vor/innerhalb dieser Methoden hinzuzufügen, aber die Exit-Animation funktionierte nie

startActivity()
finish()
onBackPressed()
0