Con la nueva API de animación que se introdujo en Android 3.0 (Honeycomb) es muy sencillo crear tales animaciones.
Deslizando un Viewdown por una distancia:
view.animate().translationY(distance);
Más tarde, puede deslizar la parte Viewposterior a su posición original de esta manera:
view.animate().translationY(0);
También puede combinar fácilmente múltiples animaciones. La siguiente animación se deslizará Viewhacia abajo por su altura y se desvanecerá al mismo tiempo:
// Prepare the View for the animation
view.setVisibility(View.VISIBLE);
view.setAlpha(0.0f);
// Start the animation
view.animate()
.translationY(view.getHeight())
.alpha(1.0f)
.setListener(null);
Luego puede desvanecer el Viewrespaldo y deslizarlo nuevamente a su posición original. También configuramos un AnimatorListenermodo para que podamos configurar la visibilidad de la parte Viewposterior GONEuna vez que finaliza la animación:
view.animate()
.translationY(0)
.alpha(0.0f)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
view.setVisibility(View.GONE);
}
});
Viewcuando su visibilidad está configuradaView.GONE? Si establece su visibilidad en cualquier cosa además deView.VISIBLEesoView, no será visible. No entiendo lo que preguntas. Si desea que su animación sea visible, no configure la visibilidad deViewaView.GONE.onAnimationEndse llama cada vez que para una animación múltiples que ocurren, lo que significa queonAnimationEndse llama también cuando la vista consigue muestra, que establece su visibilidad a Ido, etc.Estaba teniendo problemas para entender y aplicar la respuesta aceptada. Necesitaba un poco más de contexto. Ahora que lo he descubierto, aquí hay un ejemplo completo:
MainActivity.java
activity_mail.xml
Notas
INVISIBLE.INVISIBLE. Sin embargo, si no está animando completamente fuera de la pantalla, puede agregar una animación alfa y establecer la visibilidad con unAnimatorListenerAdapter.fuente
.setVisibility(View.INVISIBLE);la función deslizar hacia arriba no funcionará como se esperaba visualmente.Translate Animationmueve la vista. Si desea animar la vista al igual que su escala por sí mismo a continuación, utilizarScaleAnimation anim = new ScaleAnimation(1, 1, 0, 1)Ahora las animaciones de cambio de visibilidad deben hacerse a través del
Transition APIpaquete de soporte disponible (androidx). Simplemente llame al método TransitionManager.beginDelayedTransition con la transición Slide y luego cambie la visibilidad de la vista.activity_main.xml
Verifique esta respuesta con otros ejemplos de transición predeterminados y personalizados.
fuente
minSdkVersion 21androidxpaquete. Funciona bien en pre 21 api.La solución más fácil: configurar
android:animateLayoutChanges="true"en el contenedor que contiene sus vistas.Para ponerlo en algún contexto: si tiene un diseño como el siguiente, todos los cambios de visibilidad de las vistas en este contenedor se animarán automáticamente.
Puede encontrar más detalles sobre esto en Animating Layout Changes - Desarrollador de Android
fuente
Puede iniciar el correcto
Animationcuando la visibilidad de losLinearLayoutcambios crea una nueva subclase deLinearLayouty anularsetVisibility()para iniciar elAnimations. Considera algo como esto:fuente
Viewresponsable de sus propias animaciones, que NUNCA es lo que quieres. Imagine que desea animar de maneraViewdiferente en otra parte de su aplicación. ¿Que haces entonces? ¿Agregar una bandera para no animar automáticamente la visibilidad? SubclaseViewy anularsetVisibility()para eliminar la animación? ¿O peor aún implementarsetVisibility()con otra animación? Simplemente se pone más y más feo a partir de ahí. No use esta "solución".Kotlin
Basado en la respuesta de Suragch , aquí hay una manera elegante usando la extensión Ver:
Y luego, donde quieras usarlo, solo necesitas
myView.slideUp()omyView.slideDown()fuente
fuente
setAlpha?puede deslizar hacia arriba y hacia abajo cualquier vista o diseño utilizando el siguiente código en la aplicación de Android
fuente
Usa esta clase:
fuente
Usando ObjectAnimator
fuente
0.toFloat()también puede ser0fTenía una vitrina en la que la altura de mi vista todavía era
zerotan ...fuente
Aquí está mi solución. Simplemente obtenga una referencia a su punto de vista y llame a este método:
No es necesario hacer nada más =)
fuente
La respuesta de Suragch en Kotlin. Esto funcionó para mí.
}
fuente
Puede usar las tres líneas de código simples para mostrar la animación ...
fuente
Con las extensiones de Kotlin puedes usar esto:
Ejemplo para la extensión:
fuente
Una de las formas simples:
fuente