2016-07-19 5 views
0

Ich habe zwei einfache Aktivitäten ist eine normale Aktivität und die zweite ist durchscheinend. Das Transparente über dem Normalen. Ich muss zwei Animationen gleichzeitig auf beiden Aktivitäten starten.Wie starte ich zwei Animationen gleichzeitig auf verschiedenen Aktivitäten

Ich bin verwirrt mit Timing, kann jemand vorschlagen, wie können wir das erreichen?
Vielen Dank im Voraus.

Ich verwende einfache Übersetzung Animation auf beiden Orten aber Timing ist passend nicht:

Animation a = new ScaleAnimation(1, 1, 0, 1, Animation.RELATIVE_TO_SELF, 
       (float) 0.5, Animation.RELATIVE_TO_SELF, (float) 0); 
a.setFillAfter(true); 
tabLayout.setAnimation(a); 
a.setDuration(400); 
a.setInterpolator(new LinearOutSlowInInterpolator()); 
tabLayout.setVisibility(View.VISIBLE); 
tabLayout.startAnimation(a); 

Der obige Code, den ich für die Animation verwenden.

Antwort

3

Um so etwas zu tun, verwenden Sie Fragmente statt Aktivität. Activity kann Animationen in zwei Fragmenten leicht steuern und somit kann Ihr Problem leicht gelöst werden. Wie auch in einer anderen Antwort erwähnt, kann dies nicht durch Verwendung von Aktivitäten erreicht werden, da die Animation zerstört wird, sobald sie im Hintergrund ist. Und Inter-Fragment-Kommunikation kann leicht durch Verwendung von Schnittstellen über die Activity-Klasse erreicht werden. Ich empfehle Ihnen, über Fragmente und Kommunikation zwischen Fragmenten zu lesen.

2

Sie sind nicht in der Lage zwei getrennte Animationen in zwei verschiedenen Aktivitäten zu starten. Die Aktivität im Hintergrund wird zerstört, sobald sie dort abgelegt wird. Sie können eine Animation nur in der aktuellen sichtbaren Aktivität starten.

+1

+1 für den ersten Satz. Das zweite ist jedoch falsch, vor allem wird "wird zerstört" -Teil. Die andere Aktivität kann zerstört werden, muss aber nicht. und es ist in Ordnung, Aktivität als Dialog zu haben, so dass Sie die zugrundeliegende Aktivität sehen, jedoch kann das Abspielen einer beliebigen Animation problematisch sein, da dessen 'onPause()' bereits aufgerufen wurde –