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
- Cuadro de mensaje para android mono
- Tablas de la barra de acción de Android, Styling el icono y el texto juntos
- Estoy tratando de hacer mono android simple "hola mundo", pero no veo "hola mundo" en el emulador por qué?
- ¿MonoDroid vale la pena el esfuerzo?
- ¿Cómo migrar el centro de notificación Azure a Firebase Cloud Messaging?
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.
- Configuración de la versión de Android
- Cuál es la diferencia entre Java.Net.Uri y Android.Net.Uri
- GetAllNetworkInterfaces () lanza la excepción
- AndroidGameWindow.SetDisplayOrientation NullReferenceException
- Mono para Android - ¿Cómo funciona?
- Obfuscation en proyectos de Xamarin
- VM con la versión 1.6.0 no tiene soporte multidex: No se puede encontrar la aplicación Mono.Android.Platform.ApiLevel_23 o Xamarin.Android.Platform
- SetColorFilter no funciona 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