getan werden kann, mit Scenes and Transitions API: das Attribut android:animateLayoutChanges="true"
Zum Beispiel verwenden können.
Rahmen geben uns drei Transition
Typen aus der Box: Fade
, Slide
und Explode
, aber Sie können auch Ihre individuelle Art des Übergangs erstreckt Visibility
Klasse und überwiegender geeigneter Methoden erstellen.
So hat jeder ViewGroup
, können wir dies tun:
viewGroup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
Transition t = null;
if (i == 1) {
t = new Fade();
} else if (i == 2) {
t = new Slide(Gravity.BOTTOM);
} else if (i == 3) {
t = TransitionInflater.from(v.getContext())
.inflateTransition(R.transition.my_transition);
}
Button button = new Button(v.getContext());
button.setText("My button " + i++);
TransitionManager.beginDelayedTransition(customLayout, t);
viewGroup.addView(button);
}
});
Wo my_transition.xml folgt:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000"
android:interpolator="@android:interpolator/fast_out_slow_in">
<fade/>
<slide android:slideEdge="bottom"/>
</transitionSet>
Wir werden dieses Ergebnis:
Beachten Sie, dass wir TransitionManager.beginDelayedTransition()
ausführen müssen, bevor Änderungen am Layout vorgenommen wurden (d. H. vor addView()
heißt). Dann kümmert sich Framework um den Rest.
Es gibt auch eine andere Überlastung TransitionManager.beginDelayedTransition(ViewGroup)
, wo Sie nicht angeben müssen, welche genaue Übergang angewendet werden soll, und das System wird AutoTransition
Animation ausführen, die im Grunde wird verblassen und Grenzen der animierten Ansicht ändern.
aktualisiert Summe von Unterhaltung bis in den Kommentaren
Framework TransitionManager
von API 19 zur Verfügung steht, und voll von API 21 unterstützt (mit den Worten voll meine ich zum Beispiel Slide
Übergang von API 21 zur Verfügung). Es gibt zwar support package available, aber es werden nicht alle Funktionen rückportiert. Alternativ können Sie auch in die Bibliothek TransitionsEverywhere wechseln, die alles bis zu Android 4.0 zurückspeichert.
Ich will es, wenn ich wie folgt hinzufügen 'für (int i = 0; i
Platzieren Sie TransitionManager.beginDelayedTransition() 'vor' for' loop. – azizbekian
Ich versuche my_transition.xml hinzuzufügen Ich habe ** @ android: interpolator/fast_out_slow_in erfordert API level 21 (aktuelle min ist 15) ** auf 'android: interpolator =" @ android: interpolator/fast_out_slow_in "' –