So erreichen Sie eine Animation von rechts nach links, um die Aktivität zu starten

Lesezeit: 7 Minuten

Ich arbeite an einer Demoanwendung, in der ich Animationen anwenden möchte, wenn eine App gestartet wird activity. Ich habe den folgenden Code geschrieben, aber dies dient dazu, die Aktivität von links nach rechts zu animieren.

left_to_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate android:fromXDelta="-100%" android:toXDelta="0%"
        android:fromYDelta="0%" android:toYDelta="0%"
        android:duration="500"/>
</set>

rechts_nach_links.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:duration="500"
        android:fromXDelta="0%"
        android:fromYDelta="0%"
        android:toXDelta="100%"
        android:toYDelta="0%" />
</set>

Ich fange hier an activity so was

startActivity(new Intent(this, LoginActivity.class));
overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);

Ich möchte eine Animation von rechts nach links erzielen. Wie das gehen kann.

Danke im Voraus.

Benutzer-Avatar
Mike

Nehmen Sie diese Änderungen an Ihren Animationsdateien vor:

enter.xml:

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:duration="500"
        android:fromXDelta="100%"
        android:fromYDelta="0%"
        android:toXDelta="0%"
        android:toYDelta="0%" />
</set>

exit.xml:

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:duration="500"
        android:fromXDelta="0%"
        android:fromYDelta="0%"
        android:toXDelta="-100%"
        android:toYDelta="0%" />
</set>

Ihre zweite Aktivität wird von rechts nach links eingefügt.

Zum besseren Verständnis, wie man mit den fromXDelta- und toXDelta-Werten für die Animationen herumspielen kann, ist hier eine sehr einfache Illustration der Werte:
Aktivitätsübergangswerte auf der X-Achse

Auf diese Weise können Sie leicht nachvollziehen, warum Sie android:fromXDelta=”0%” und android:toXDelta=”-100%” für Ihre aktuelle Aktivität hinzufügen. Und das liegt daran, dass Sie möchten, dass es von 0% auf die Position -100% geht.

[EDIT]

Wenn Sie also ActivityB von ActivityA aus öffnen möchten, gehen Sie wie folgt vor (angenommen, Sie haben eine Schaltfläche):

button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(ActivityA.this, ActivityB.class));
            overridePendingTransition(R.anim.enter, R.anim.exit);
        }
    });

Wenn Sie nun die „rückwärts“-Animation der ersten haben möchten, wenn Sie Aktivität B verlassen, benötigen Sie zwei neue Animationsdateien und etwas Code in der onBackPressed-Methode von ActivityB, wie folgt:

Zuerst die Animationsdateien: left_to_right.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:duration="500"
        android:fromXDelta="-100%"
        android:fromYDelta="0%"
        android:toXDelta="0%"
        android:toYDelta="0%" />
</set>

rechts_nach_links.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:duration="500"
        android:fromXDelta="0%"
        android:fromYDelta="0%"
        android:toXDelta="100%"
        android:toYDelta="0%" />
</set>

Und in ActivityB tun Sie Folgendes:

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
}

Wenn Sie die Aufwärtsnavigation aktiviert haben, müssen Sie auch in diesem Fall die Animation hinzufügen:

Sie aktivieren die UP-Navigation wie folgt:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActionBar().setDisplayHomeAsUpEnabled(true);
}

Und so gehen Sie auch in diesem Fall mit der Animation um:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
       //NavUtils.navigateUpFromSameTask(this);
       finish();
       overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
       return true;
    }
    return super.onOptionsItemSelected(item);
}

Beachten Sie auch, dass die Animation Ihres Telefons möglicherweise deaktiviert ist, selbst wenn Ihr Code in Ordnung ist. Gehen Sie zum Einschalten wie folgt vor:

  1. Öffnen Sie Einstellungen und gehen Sie zu Entwickleroptionen
  2. Stellen Sie sicher, dass es aktiviert ist (indem Sie die Umschalttaste oben rechts verschieben)
  3. Scrollen Sie nach unten und tippen Sie unter Zeichnen nacheinander auf diese Optionen: Windows-Animationsskalierung, Übergangsanimationsskalierung und Animator-Dauerskalierung
  4. Wählen Sie “Animationsmaßstab 1x”

Hilft das?

  • Was muss ich schreiben, um die Aktivität und die Zielaktivität zu starten?

    – N Sharma

    17. Oktober 2014 um 18:49 Uhr

  • Unbedingt. Ich werde das auch hinzufügen

    – Mike

    17. Oktober 2014 um 18:56 Uhr

  • @Mike können wir das eingebaute android.R.anim.slide_in_left und android.R.anim.slide_out_right verwenden?

    – Utsav

    7. Dezember 2016 um 16:34 Uhr

  • Die ersten beiden Animationen können für den Rückübergang wiederverwendet werden, einfach austauschen? @Mike

    – abdu

    31. Mai 2018 um 7:41 Uhr


  • @abdu versuch es 🙂

    – Mike

    4. Juni 2018 um 16:35 Uhr

Benutzer-Avatar
Klänge von Polaris

overridePendingTransition sollte in der “Ziel”-Aktivität aufgerufen werden. Zum Beispiel: Wenn Sie von Aktivität A -> B gehen, würden Sie das eingeben overridePendingTransition rufen Sie an onCreate der Aktivität B.

Denken Sie daran, dass Sie die Anzeige von Animationen nicht erzwingen können, wenn der Benutzer die Animation auf Systemebene deaktiviert hat.

BEARBEITEN:

Ein Beispiel würde so aussehen:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    overridePendingTransition(R.anim.enter, R.anim.exit);
}

  • was soll ich in die Zielaktivität schreiben, um das zu erreichen?

    – N Sharma

    17. Oktober 2014 um 18:47 Uhr

  • siehe Bearbeiten für ein Beispiel, das Sie Ihren Aktivitäten A und B hinzufügen können

    – Klänge von Polaris

    17. Oktober 2014 um 21:41 Uhr

  • Dies ist die funktionierende Antwort, insbesondere im Falle eines neu eingeführten Ergebnisstarters

    – Schichar

    18. Mai um 12:27 Uhr

Benutzer-Avatar
Maulik Patel

Dies ist der perfekte Code für mich Slideinleft

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="100%p"
    android:toXDelta="0"
    android:duration="800"/>

Rechts schieben

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="-100%p"
    android:duration="800"/>

In Aktivität

Intent intent = new Intent(getApplicationContext(),termcondionactivity.class);
Bundle bndlAnimation = ActivityOptions.makeCustomAnimation(getApplicationContext(), R.anim.slideinleft, R.anim.slideinright).toBundle();

startActivity(intent, bndlAnimation);

Um die Aktivitätsübergangsanimation auf die gesamte Anwendung anzuwenden, müssen wir einige Schritte befolgen.

Schritt 1. Erstellen Sie vier Animationsressourcen. (slide_in_left, slide_in_right, slide_out_left und slide_out_right)

Ressourcendatei: slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromXDelta="-100%p"
    android:toXDelta="0" />
</set>

Ressourcendatei: slide_in_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromXDelta="100%p"
    android:toXDelta="0" />
</set>

Ressourcendatei: slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromXDelta="0"
    android:toXDelta="-100%p" />
 </set>

Ressourcendatei: slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromXDelta="0"
    android:toXDelta="100%p" />
 </set>

Schritt 2. Erstellen Sie einen benutzerdefinierten Stil und verwenden Sie Animationsressourcen.

<style name="MyCustomActivityAnimation" 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>

Schritt 3. Wenden Sie den Stil auf das Thema der Anwendung an.

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    
    <item name="android:windowAnimationStyle">@style/MyCustomActivityAnimation</item>
</style>

Schritt 4. Wenden Sie das Design auf Ihre Anwendung in Manifest an.

<application
   ....
    android:theme="@style/AppTheme"
    >
    ....
 </application>

Benutzer-Avatar
saranya

Probieren Sie diesen Code aus, er funktioniert bei mir

Von rechts nach links schieben

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true" >
    <translate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="500"
        android:fromXDelta="0%"
        android:toXDelta="-50%" >
    </translate>
</set>

Von links nach rechts schieben

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromXDelta="-50%"
    android:toXDelta="0%" >
</translate>

1216400cookie-checkSo erreichen Sie eine Animation von rechts nach links, um die Aktivität zu starten

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

Privacy policy