11

Ich habe 2 Aktivitäten und möchte einen animierten Übergang zwischen den beiden Aktivitäten erstellen, sodass die Ansichten beider Aktivitäten nach oben gleiten, als würde die zweite Aktivität die erste Aktivität nach oben schieben. in meiner ersten Tätigkeit verwenden i:overridePendingTransition zeigt die zweite Aktivität zu schnell an

Intent iSecondActivity = new Intent(FirstActivity.this,SecondActivity.class); 
FirstActivity.this.startActivity(iSecondActivity); 
FirstActivity.this.overridePendingTransition(R.anim.slide, R.anim.slide2); 

und meine slide.xml wie folgt aussehen:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator"> 
    <translate 
     android:interpolator="@android:anim/decelerate_interpolator" 
     android:fromYDelta="0" 
     android:toYDelta="-100%p" 
     android:duration="2000" 
    /> 
</set> 

und meine slide2.xml wie folgt aussieht:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator"> 
    <translate 
     android:interpolator="@android:anim/decelerate_interpolator" 
     android:fromYDelta="100%p" 
     android:toYDelta="0" 
     android:duration="2000" 
    /> 
</set> 

jedoch das Problem ist, dass Wenn "startActivity" aufgerufen wird, wird die Ansicht der zweiten Aktivität bereits gerendert, während der Übergang gerade beginnt zu gleiten. Ich möchte, dass die Ansicht der ersten Aktivität nach oben gleitet ... aber stattdessen sehe ich, wie die Ansicht der zweiten Aktivität (über die Ansicht der ersten Aktivität gerendert) nach oben gleitet.

Das zweite Problem ist, dass ich die Ersatzansicht als erste Aktivität sehe. Ich möchte, dass die Ersatzansicht die Ansicht der zweiten Aktivität ist, die nach oben geht.

Es ist schwer zu erklären, also lass es mich wissen, wenn ich etwas ausführlicher erklären kann. Entschuldigung für jede Verwirrung, und danke für das Lesen.

P.S. Ich benutze Textviews ... ich denke, das rendert zu schnell? Ich benutze auch Motorola Razr, nicht dass es wichtig wäre.

Antwort

9

Nevermind, das war ein dummer Fehler - ich habe nicht verstanden, was die Dokumentation bedeutet mit "Animation eingeben" vs "Animation beenden". ich brauche, um die xmls zu tauschen durch Änderung:

FirstActivity.this.overridePendingTransition(R.anim.slide, R.anim.slide2); 

in

FirstActivity.this.overridePendingTransition(R.anim.slide2, R.anim.slide); 
+0

gibt es eine Möglichkeit, Animator stattdessen zu verwenden? –

+0

Ich sah auch das gleiche Problem, aber durch Ihre Antwort gelöst, aber es ist sehr seltsam. Wie auch immer, Danke –

6

fügen Sie einfach diese zu Ihrem slide2.xml:

android:startOffset="2000" 

auf diese Weise die Animation für die zweite Aktivität nur richtig beginnen wird, nachdem die Animation 1. Aktivität des vollständig ist.

+0

Sorry, ich auf meine Frage nicht klar war. Ich hatte gedacht, dass das Problem darin bestand, das Rendern zu schnell zu machen. aber es stellt sich heraus, dass ich einfach nicht verstanden habe, was sie damit gemeint haben, indem sie "animation" -Parameter in den Aufruf von "overridePendingTransition" eingaben. –

+0

aber ich wusste nicht, dass Sie die Animation verzögern können. das ist ziemlich nützlich. +1 –