it-swarm.com.de

Neue Aktivität in Android "Eingabe von der Seite"

Was ist der beste Weg, um zu einer neuen Aktivität zu gelangen, aber so aussehen, als würde die Aktivität nach links verschoben und die neue Aktivität erscheint auf dem Bildschirm? Ich benutze die Absicht, um die neue Aktivität aufzurufen. Ist dies der Weg, wenn die Anwendung leichtgewichtig sein soll?

Um es etwas besser zu erklären: Auf meinem Android-Handy kann ich die Ansicht mit dem Heimmenüs nach rechts streichen und dann einen Freundes-Stream von links eingeben und auf dem Bildschirm sehen. Ich möchte es in meiner App mit Buttonclicks machen, es ist das "Schieben", nach dem ich gehe. Vielen Dank!

37
kakka47

Ich denke, in Android OS 2.1 oder höher können Sie die Methode OverridePendingTransition () verwenden, um die Art des Übergangs zwischen den Animationen für Aktivitäten bereitzustellen, die Sie suchen.

Definieren Sie zunächst einige Animationsressourcen in / res/anim/. Hier ist einer, der right_slide_out.xml heißt:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:interpolator="@Android:anim/accelerate_decelerate_interpolator">
    <translate
        Android:fromXDelta="0"
        Android:toXDelta="100%p"
        Android:duration="500"
    />
</set>

Eine andere namens right_slide_in.xml :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:interpolator="@Android:anim/accelerate_decelerate_interpolator">
    <translate
        Android:fromXDelta="100%p"
        Android:toXDelta="0"
        Android:duration="700"
    />
</set>

Wenn Sie dann die neue Aktivität starten, verwenden Sie die OverridePendingTransition-Methode wie folgt:

startActivity(intent);
overridePendingTransition  (R.anim.right_slide_in, R.anim.right_slide_out);

Das sollte die Übergangsanimationen zum Starten der Aktivität behandeln.

Umgekehrt, wenn diese Aktivität beendet ist und Sie zum ursprünglichen zurückkehren, ist es etwas neblig. 

Wenn Sie über ein UI-Steuerelement verfügen, das diese Aktivität beendet und Activity.finish () aufruft, können Sie direkt danach overridePendingTransition () hinzufügen.

Um den Fall zu handhaben, in dem der Benutzer die Aktivität durch Drücken der Zurück-Taste beendet, verwenden Sie etwa Folgendes:

@Override
public void onBackPressed() 
{

    this.finish();
    overridePendingTransition  (R.anim.right_slide_in, R.anim.right_slide_out);
}
90
mmeyer

Sie können left_slide_out.xml verwenden (ändern Sie einfach toXDelta in Joshs right_slide_out.xml in -100% p), um die alte Aktivität nach links verschwinden zu lassen (und in beiden Animationen die gleiche Dauer haben).

Jems ist richtig. Standardmäßig erhalten Sie beim Starten einer neuen Absicht eine gleitende Animation.

Wenn Sie nach einer benutzerdefinierteren Animation suchen, können Sie overridePendingTransition verwenden. Denken Sie daran, dass es in API Level 5 hinzugefügt wurde. In dieser API-Demo finden Sie Beispielanwendungen.

3
Noel

Ja, die Verwendung von Intents ist die Standardmethode, um eine andere Aktivität zu starten, und normalerweise erledigt das gleitende Ding, das Sie erwähnen, z. startActivity (new Intent (this, myNextActivity.class))); werde es tun.

3
Jems

Es gibt einige Verwirrung darüber, was die Ein- und Ausstiegsanimationen sind. Für diejenigen, die noch darüber nachdenken, hier eine Vorlage ..

overridePendingTransition(
    enterAnimationForCalledActivity, 
    exitAnimationForCallingActivity
);

Dies sollte die Luft wahrscheinlich ein wenig klären.

1
Ram Iyer