Utilizar un ValueAnimator para hacer que un TextView parpadee diferentes colores
Quiero usar un ValueAnimator
para hacer que el color de texto de un TextView
parpadee dos veces entre dos colores diferentes, pero quiero crear la Animación en XML. No puedo encontrar ejemplos. Cualquier ayuda será apreciada.
Actualizar
- Rotar la imagen en el centro no va lisa (Monodroid)
- Cómo cambiar los colores de la forma en Drawable?
- ¿Puedo obtener una devolución de llamada en la clase de aplicación siempre que se inicie una nueva actividad en toda la aplicación?
- Asegurar cadena en APK
- ¿Cómo guardar una imagen en almacenamiento interno y luego mostrarla en otra actividad?
El código abajo funciona perfecto. El color cambia de negro a azul, azul a negro, negro a azul, y azul a negro con 500ms entre cada repetición inversa. Sin embargo, estoy tratando de conseguir que esto funcione desde un archivo xml animador.
ValueAnimator colorAnim = ObjectAnimator.OfInt(objectToFlash, "textColor", (int)fromColor, (int)toColor); colorAnim.SetDuration(500); colorAnim.SetEvaluator(new ArgbEvaluator()); colorAnim.RepeatCount = 3; colorAnim.RepeatMode = ValueAnimatorRepeatMode.Reverse;
Xml
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:propertyName="textColor" android:duration="500" android:valueFrom="@color/black" android:valueTo="@color/ei_blue" android:repeatCount="3" android:repeatMode="reverse" />
Código
ValueAnimator anim = (ObjectAnimator)AnimatorInflater.LoadAnimator(Activity, Resource.Animator.blinking_text); anim.SetTarget(objectToFlash);
El uso de xml hace que el color del color de texto de TextView
cambie tantas veces como sea posible dentro de 500ms.
Actualización Creo que lo que necesito son Keyframes para imitar en xml lo que la llamada OfInt está haciendo de forma programática. Tratando esto ahora, pero no hay suerte hasta ahora.
- Cambiar el fondo de la actividad del código
- Xamarin pérdida de memoria Android con actividad simple
- Selección de Intenciones de Android para mostrar sólo la opción de correo electrónico
- Uso del depurador de Microsoft con Xamarin Android
- Necesita un ejemplo de tomar una imagen con MonoDroid y MVVMCross
- Colores de Xamarin que causan errores de compilación
- Cuadro de mensaje para android mono
- ¿Cómo detectar los recursos no utilizados en Xamarin.Android?
Prueba esto:
private static final int RED = 0xffFF8080; private static final int BLUE = 0xff8080FF; ValueAnimator colorAnim = ObjectAnimator.ofInt(myTextView, "backgroundColor", RED, BLUE); colorAnim.setDuration(3000); colorAnim.setEvaluator(new ArgbEvaluator()); colorAnim.setRepeatCount(ValueAnimator.INFINITE); colorAnim.setRepeatMode(ValueAnimator.REVERSE); colorAnim.start();
O pruebe este método no comprobado a través de xml: * res / animator / property_animator.xml *
<set > <objectAnimator android:propertyName="backgroundColor" android:duration="3000" android:valueFrom="#FFFF8080" android:valueTo="#FF8080FF" android:repeatCount="-1" android:repeatMode="reverse" /> </set>
Ahora en código Java:
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext, R.anim.property_animator); set.setTarget(myTextView); set.start();
El problema que describe es que el animador de objetos especificado en XML no está asignando correctamente el ArgbEvaluator para la interpolación de color.
Para resolver el problema, cree el animador de objetos XML para interponer entre los colores que desee. A continuación, en el código fuente, haga lo siguiente asegurándose de que el evaluador utilizado por el animador es un ArgbEvaluator:
ObjectAnimator colorAnimator = (ObjectAnimator)AnimatorInflater.loadAnimator(this, R.animator.color_rotation); colorAnimator.setTarget(objectToFlash); colorAnimator.setEvaluator(new ArgbEvaluator()); colorAnimator.start();
A partir de API LEVEL> 21 el mismo efecto se puede hacer con el método estático ObjectAnimator.ofArgb
así:
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void animateText(TextView text) { ObjectAnimator animator = ObjectAnimator.ofArgb(text, "textColor", Color.WHITE, Color.RED); animator.setDuration(500); animator.setRepeatCount(3); animator.setRepeatMode(ValueAnimator.REVERSE); animator.start(); }
- ¿Cómo puedo hacer clic en una parte del texto de una casilla de verificación?
- Obtener la dirección de ubicación actual de la aplicación de Android