que se pueden hacer con Scenes and Transitions API.
Marco
nos da tres tipos Transition
fuera de la caja: Fade
, Slide
y Explode
, pero también puede crear su tipo personalizado de transición que se extiende Visibility
clase y métodos apropiados primordiales.
lo tanto, tener cualquier ViewGroup
, podemos hacer esto:
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);
}
});
Dónde my_transition.xml sigue:
<?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>
conseguiremos este resultado:
Tenga en cuenta que debemos realizar TransitionManager.beginDelayedTransition()
antes de realizar cualquier cambio en el diseño (es decir, antes de llamar al addView()
). Entonces framework se encargará del resto.
También hay otra sobrecarga TransitionManager.beginDelayedTransition(ViewGroup)
, donde no es necesario especificar qué transición exacta desea aplicar, y el sistema realizará la animación AutoTransition
, que básicamente se desvanecerá y cambiará los límites de la vista animada.
actualización suma arriba de conversación en los comentarios
de TransitionManager
está disponible a partir de la API 19, y el pleno apoyo de la API 21 Marco (diciendo plenamente Me refiero, por ejemplo, Slide
transición está disponible de API 21). Aunque existe support package available, pero no respalda todas las funciones. Alternativamente, puede pasar a la biblioteca TransitionsEverywhere, que respalda todo hasta Android 4.0.
Lo quiero cuando agrego como este 'for (int i = 0; i
Coloque 'TransitionManager.beginDelayedTransition()' before 'for' loop. – azizbekian
Estoy tratando de agregar my_transition.xml Tengo ** @ android: interpolator/fast_out_slow_in requiere API nivel 21 (actual min es 15) ** en 'android: interpolator =" @ android: interpolator/fast_out_slow_in "' –