ObjectAnimator vs TranslateAnimation
Simplemente hago un proyecto sencillo en el que intento mostrar u ocultar un diseño en la parte superior de un LinearLayout con TranslateAnimation. Hubo un parpadeo porque cuando llamo onAnimationEnd (), la animación no fue terminada por 0.1sec.
Ejemplo:
- ¿Cómo usar los marcadores de principio y fin en regex para Java String?
- Detenga el subproceso Java que llama a la función JNI
- ¿Cómo puedo detectar una versión de mi aplicación?
- Portar un juego SDL 2.0 a Android
- Class.getResource (className) que me da NullPointerException
@Override public void onAnimationEnd(Animation animation) { retractableLayout.setVisibility(View.GONE); }
Cuando busco en stackoverflow, he encontrado que hay otra manera de hacerlo. Con ObjectAnimator. Después de usarlo, mi animación estaba bien sin una View.GONE
¿Cuál es la diferencia entre TranslateAnimation y ObjectAnimator? Es uno de ellos es obsoleto y hacen lo mismo o hay un momento en que uno o el otro es mejor.
Aquí hay un reporte de github con las 2 versiones ( https://github.com/charlesvigneault/AAA_Test1 )
Gracias
- Android ViewPager - agregar presentación de diapositivas con animación de fade-in / out para cambiar entre vistas
- Cómo crear una nueva hoja de cálculo mediante programación en Android / Java?
- La conversión al formato de Dalvik falló con el error 1 puesto que el SDK de Facebook
- Android - Enmascarar un mapa de bits con otro mapa de bits
- Android Threading: Esta clase de Handler debe ser estática o pueden producirse fugas
- ¿Cómo hacer que más de un listview responda por diferentes onItemClickListener?
- Android AsyncTaskLoader no inicia loadInBackground?
- Comprueba si la aplicación de Android que conecta con el servidor es la que has hecho
La diferencia es que si usas TranslateAnimation, la vista que estás animando no deja realmente su posición original en la pantalla, solo hace que parezca que se está moviendo. Así que la vista básicamente no cambia sus coordenadas.
Consulta este video sobre las animaciones de la vista: https://www.youtube.com/watch?v=_UWXqFBF86U
Si utiliza un ObjectAnimator la vista realmente cambia su posición actual.
TranslateAnimation no es obsoleta, todavía se puede encontrar en Lollipop, pero para la mayoría de los casos puedo recomendar una clase llamada ViewPropertyAnimator , que muchas personas aún no parecen saber acerca de, es probablemente la manera más fácil y más directo para animar una vista, Y también puede guardar un montón de código. Heres un ejemplo:
retractableLayout.animate() .translationX(toX) .translationY(toY) .setDuration(duration) .setInterpolator(interpolator) .setStartDelay(startDelay);
También puede establecer un oyente, etc., asegúrese de comprobar los métodos disponibles.
Y echa un vistazo a este video realmente útil:
TranslateAnimation
es depracated desde android 3.0 y ObjectAnimator
es el camino a seguir. El animador de objetos es mucho más flexible, ya que le permite "animar" cualquier propiedad de objeto que tenga setter y getter propios implementados. Revise la guía oficial del desarrollador de android http://developer.android.com/guide/topics/graphics/overview.html
- Tema de la aplicación de Android – diferencia al utilizar el tema del archivo de estilo xml
- Excepción java.lang.NoClassDefFoundError: com.google.android.gms.common.AccountPicker