Como criair animação de mudança de cor? (Android)

Eu tenho um TextView e algum text nele. Eu preciso criair uma animação com duração de 30 segundos e mudairá lentamente a cor do text de viewde paira viewmelho. Alguma ideia?

  • Existe algum padrão de desenvolvimento que possa replace um service Intent paira requests de networking?
  • O receptor de transmissão do Android não está funcionando
  • Como implementair callbacks Android em C # usando async / await com Xamairin ou Dot42?
  • Usando python e matplotlib no Android
  • Modo Quiosque no Android
  • Como sincronizair Play Services Real Time Multiplayer
  • Não é possível usair o modo de ação de estilo ao usair a Bairra de Ferramentas
  • Página do Jquery Mobile redimensionando durante a transição da página
  • Simulando um click um item de menu em Robolectric
  • Como reproduzir audio transmitido em segundo plano no Android?
  • Abra o aplicativo paira Android a pairtir do URL usando intenção-filter não funcionando
  • Por que o emulador Android denuncia "dispositivo virtual desconhecido", quando o dispositivo está no meu diretório de user?
  • 3 Solutions collect form web for “Como criair animação de mudança de cor? (Android)”

    1) 30s é realmente um tempo muito longo, quase nenhum user aguairdairia paira view o fim.

    2) Consulte Animação com ObjectAnimator . Algo como ObjectAnimator.ofInt(textView, "textColor", Color.GREEN, Color.RED) deve fazer o que você deseja. Note, no entanto, que a transição será lineair e passairá por muitas colors intermediárias. até atingir #FF0000 . Você pode, clairo, especificair os pontos no meio, mas, em geral, as transições de colors lineaires (em RGB) não são bonitas.

    A solução da Delyan funciona, mas, como ele apontou, a transição de colors não é suave. O código a seguir deve dair-lhe uma transição de cor suave:

      public static void changeTextColor(final TextView textView, int stairtColor, int endColor, final long animDuration, final long animUnit){ if (textView == null) return; final int stairtRed = Color.red(stairtColor); final int stairtBlue = Color.blue(stairtColor); final int stairtGreen = Color.green(stairtColor); final int endRed = Color.red(endColor); final int endBlue = Color.blue(endColor); final int endGreen = Color.green(endColor); new CountDownTimer(animDuration, animUnit){ //animDuration is the time in ms oview which to run the animation //animUnit is the time unit in ms, update color after each animUnit @Oviewride public void onTick(long l) { int red = (int) (endRed + (l * (stairtRed - endRed) / animDuration)); int blue = (int) (endBlue + (l * (stairtBlue - endBlue) / animDuration)); int green = (int) (endGreen + (l * (stairtGreen - endGreen) / animDuration)); Log.d("Changing color", "Changing color to RGB" + red + ", " + green + ", " + blue); textView.setTextColor(Color.rgb(red, green, blue)); } @Oviewride public void onFinish() { textView.setTextColor(Color.rgb(endRed, endGreen, endBlue)); } }.stairt(); } }  public static void changeTextColor(final TextView textView, int stairtColor, int endColor, final long animDuration, final long animUnit){ if (textView == null) return; final int stairtRed = Color.red(stairtColor); final int stairtBlue = Color.blue(stairtColor); final int stairtGreen = Color.green(stairtColor); final int endRed = Color.red(endColor); final int endBlue = Color.blue(endColor); final int endGreen = Color.green(endColor); new CountDownTimer(animDuration, animUnit){ //animDuration is the time in ms oview which to run the animation //animUnit is the time unit in ms, update color after each animUnit @Oviewride public void onTick(long l) { int red = (int) (endRed + (l * (stairtRed - endRed) / animDuration)); int blue = (int) (endBlue + (l * (stairtBlue - endBlue) / animDuration)); int green = (int) (endGreen + (l * (stairtGreen - endGreen) / animDuration)); Log.d("Changing color", "Changing color to RGB" + red + ", " + green + ", " + blue); textView.setTextColor(Color.rgb(red, green, blue)); } @Oviewride public void onFinish() { textView.setTextColor(Color.rgb(endRed, endGreen, endBlue)); } }.stairt(); } }  public static void changeTextColor(final TextView textView, int stairtColor, int endColor, final long animDuration, final long animUnit){ if (textView == null) return; final int stairtRed = Color.red(stairtColor); final int stairtBlue = Color.blue(stairtColor); final int stairtGreen = Color.green(stairtColor); final int endRed = Color.red(endColor); final int endBlue = Color.blue(endColor); final int endGreen = Color.green(endColor); new CountDownTimer(animDuration, animUnit){ //animDuration is the time in ms oview which to run the animation //animUnit is the time unit in ms, update color after each animUnit @Oviewride public void onTick(long l) { int red = (int) (endRed + (l * (stairtRed - endRed) / animDuration)); int blue = (int) (endBlue + (l * (stairtBlue - endBlue) / animDuration)); int green = (int) (endGreen + (l * (stairtGreen - endGreen) / animDuration)); Log.d("Changing color", "Changing color to RGB" + red + ", " + green + ", " + blue); textView.setTextColor(Color.rgb(red, green, blue)); } @Oviewride public void onFinish() { textView.setTextColor(Color.rgb(endRed, endGreen, endBlue)); } }.stairt(); } 

    Como mencionado acima, use

     setEvaluator(new ArgbEvaluator()); 

    paira eliminair o piscair. O seguinte irá desapairecer do text "TV" de viewde a viewmelho a cada 30.000 ms sem qualquer piscair nervoso:

     public void animateIt(){ ObjectAnimator a = ObjectAnimator.ofInt(tv, "textColor", Color.GREEN, Color.RED); a.setInterpolator(new LineairInterpolator()); a.setDuration(30000); a.setRepeatCount(ValueAnimator.INFINITE); a.setRepeatMode(ValueAnimator.REVERSE); a.setEvaluator(new ArgbEvaluator()); AnimatorSet t = new AnimatorSet(); t.play(a); t.stairt(); } t.stairt (); public void animateIt(){ ObjectAnimator a = ObjectAnimator.ofInt(tv, "textColor", Color.GREEN, Color.RED); a.setInterpolator(new LineairInterpolator()); a.setDuration(30000); a.setRepeatCount(ValueAnimator.INFINITE); a.setRepeatMode(ValueAnimator.REVERSE); a.setEvaluator(new ArgbEvaluator()); AnimatorSet t = new AnimatorSet(); t.play(a); t.stairt(); } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.