2017-05-05 2 views
0

Ich füge Ansichten in meiner Aktivität dynamisch über die folgende Funktion hinzu. Ich erzeuge 5 Ansichten mit dieser Funktion. Das funktioniert gut. Mein Problem ist, wenn ich Animation auf die Ansicht anwende, werden alle Ansichten animiert. Ich möchte die erste generierte Ansicht animieren, dann die zweite und so weiter. Gleich zu Beginn der Aktivität werden alle 5 Ansichten eingeblendet. Ich habe bereits setStartOffset ausprobiert, aber es funktioniert nicht. Was soll ich machen?Sequenzielle Animation für dynamisch hinzugefügte Ansichten

Funktion zur dynamischen Zugabe von Ansichten (MainActivity.java):

public void addViewInActivity() { 
    container.addView(addView); 

    Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_in); 

    final long startOffset = 1000; 
    animation.setStartOffset(startOffset); 

    addView.startAnimation(animation); 
} 

fade_in.xml

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="500" 
     android:repeatCount="0" /> 
</set> 
+0

Sie IDS zu jedem Ansichten zugewiesen haben? –

+0

Es gibt nur eine ID für jede Ansicht, aber ich habe jeder Ansicht ein eindeutiges Tag zugewiesen. –

+0

versuchen, eindeutige IDs für jede Ansicht festzulegen, und starten Sie die erste ID-Animation, in der Animation Ende Listener, starten Sie die zweite Animation ... –

Antwort

1

verwenden kann es Ihnen helfen,

private long startOffset = 1000; 

public void addViewInActivity() { 
    container.addView(addView); 

    Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_in); 
    startOffset += 500; 
    animation.setStartOffset(startOffset); 

    addView.startAnimation(animation); 
} 
+0

Ich habe es versucht und es funktionierte einwandfrei. Danke für die schnelle Antwort. Ihre Methode ist sehr einfach. –

0

Sie können Animation auf Behälter gelten. Betrachten Sie folgendes Beispiel;

dies ist ParentLayout, wo ich mehrere Ansicht dynamisch hinzufügen;

<LinearLayout 
android:id="@+id/layoutStatus" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layoutAnimation="@anim/list_layout_animation" 
android:orientation="horizontal" 
android:padding="10.0dip" /> 

Es folgt list_layout_animation

<?xml version="1.0" encoding="utf-8"?> 
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 
    android:animation="@anim/slide_in_right" 
    android:delay="0.5" /> 

Und das ist slide_in_right

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

Thats it .. Sie bereit sind zu gehen!

Verwandte Themen