Tengo una animación que quiero aplicar en cada botón de mi aplicación. Así que no quiero llamar a AnimationUtils.loadAnimation() en cada actividad en el método Crear. Me gustaría llamar a este método solo una vez cuando se inicia la aplicación para inicializar mi objeto de animación y luego obtenerlo (con un getter) en mis diferentes actividades. Soy nuevo en la programación de Android, estaba planeando usar un patrón Singleton pero parece ser "inseguro" en Android relacionado con este artículo y otras páginas de Stackoverflow. ( https://programmerr47.medium.com/singletons-in-android-63ddf972a7e7 )
¿Hay alguna forma de crear mi Animación al iniciar la aplicación y compartirla entre cada actividad? ¿Y vale la pena hacer alguna optimización?
Sugeriría extender la clase Android Button / AppCompatButton , agregar la funcionalidad que desea a la clase extendida y usar ese botón en todas partes de su aplicación mucho más fácil de esa manera y probablemente la forma más correcta,
Por ejemplo:
BotónAnimado.java:
package com.example.myapplication; import android.content.Context; import android.util.AttributeSet; public class AnimatedButton extends androidx.appcompat.widget.AppCompatButton { public AnimatedButton(Context context) { super(context); createAnimation(); } public AnimatedButton(Context context, AttributeSet attrs) { super(context, attrs); } public AnimatedButton(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } private void createAnimation() { // here create the animation and call // setAnimation([YOUR_ANIMATION_HERE]); // now you can simply call customButton.animate(); // from anywhere in the code that uses the button and it should work } }En tu xml donde quieres usar el botón:
<com.example.myapplication.AnimatedButton android:id="@+id/btn_animate" android:layout_width="180dp" android:layout_height="80dp" android:text="Animate" />