Carácter Android por carácter muestra animación de texto

¿Alguien conoce algún método eficiente para realizar una animación que lo que tiene que hacer es mostrar un texto, carácter por carácter ?, como:

T
Th
Thi
Esta
Este i
Esto es

y así.

¡Gracias!

Puede que esta no sea la solución más elegante, pero la más simple es probablemente una subclase rápida de TextView con un TextView que actualiza el texto de vez en cuando hasta que se muestra la secuencia completa:

 public class Typewriter extends TextView { private CharSequence mText; private int mIndex; private long mDelay = 500; //Default 500ms delay public Typewriter(Context context) { super(context); } public Typewriter(Context context, AttributeSet attrs) { super(context, attrs); } private Handler mHandler = new Handler(); private Runnable characterAdder = new Runnable() { @Override public void run() { setText(mText.subSequence(0, mIndex++)); if(mIndex < = mText.length()) { mHandler.postDelayed(characterAdder, mDelay); } } }; public void animateText(CharSequence text) { mText = text; mIndex = 0; setText(""); mHandler.removeCallbacks(characterAdder); mHandler.postDelayed(characterAdder, mDelay); } public void setCharacterDelay(long millis) { mDelay = millis; } } 

Puede usar esto en una actividad como esta:

 public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Typewriter writer = new Typewriter(this); setContentView(writer); //Add a character every 150ms writer.setCharacterDelay(150); writer.animateText("Sample String"); } } 

Si desea algunos efectos de animación con cada letra agregada, tal vez consulte la subclasificación de TextSwitcher en TextSwitcher lugar.

¡Espero que ayude!

utilizar la clase de máquina de escribir Devunwired

luego, en el diseño:

  

código en la actividad:

 Typewriter writer = (Typewriter)findViewById(R.id.typewriter); //Add a character every 150ms writer.setCharacterDelay(150); writer.animateText("Sample String"); 

No es necesario establecer una clase extra. Usa esto, aquí tv es una vista de texto en tu diseño simplemente llama

setCharacterDelay (150);
animateText (“Cadena de muestra”);

 private Handler mHandler = new Handler(); private Runnable characterAdder = new Runnable() { @Override public void run() { tv.setText(mText.subSequence(0, mIndex++)); if(mIndex < = mText.length()) { mHandler.postDelayed(characterAdder, mDelay); } } }; public void animateText(CharSequence text) { mText = text; mIndex = 0; tv.setText(""); mHandler.removeCallbacks(characterAdder); mHandler.postDelayed(characterAdder, mDelay); } public void setCharacterDelay(long millis) { mDelay = millis; } 

esta nueva copia para Devunwired con diseño xml

  public class Typewriter extends TextView { private CharSequence mText; private int mIndex; private long mDelay = 500; //Default 500ms delay public Typewriter(Context context) { super(context); } public Typewriter(Context context, AttributeSet attrs) { super(context, attrs); } private Handler mHandler = new Handler(); private Runnable characterAdder = new Runnable() { @Override public void run() { setText(mText.subSequence(0, mIndex++)); if(mIndex < = mText.length()) { mHandler.postDelayed(characterAdder, mDelay); } } }; public void animateText(CharSequence text) { mText = text; mIndex = 0; setText(""); mHandler.removeCallbacks(characterAdder); mHandler.postDelayed(characterAdder, mDelay); } public void setCharacterDelay(long millis) { mDelay = millis; } } 

uso del código

  textView = (Typewriter)findViewById(R.id.textView1); //Add a character every 150ms textView.setCharacterDelay(150); textView.animateText("Sample String"); 

luego defina textView en classStart

En teoría, sería


 string text = "hello" string temp = "h" 

 iterate: temp += if (text.length > temp.length) text[temp.length]; wait 

Por supuesto, harás la iteración en tu método de ejecución.

La mayoría de las soluciones proporcionadas anteriormente arrojan varios errores. Supongo que las soluciones son viejas. Me encontré con este plugin de estudio Android y funciona como encanto.

1. La instalación de AutoTypeTextView es bastante simple. Solo agregue build.gradle

comstackr ‘com.krsticdragan: autotypetextview: 1.1’

2.Agregue un nuevo espacio de nombres que usará para agregar AutoTypeTextView y usar sus tags.

xmlns: attv = “http://schemas.android.com/apk/res-auto”

Por lo tanto, su diseño de raíz debería verse así

< ?xml version="1.0" encoding="utf-8"?>

  1. Agregue esto a su archivo xml.

Con solo estos tres pasos eres bueno para ir. Puede consultar la documentación aquí para más detalles

Sé que es demasiado tarde pero todavía puede llegar alguien de Google. En realidad, yo también necesitaba algo como esto para mi aplicación, por lo que hice uno yo mismo. Prueba Fade-In TextView , hace que todos los personajes aparezcan con una animación alfa suave. El uso también es bastante simple.

En el diseño XML

   

En la Actividad / Fragmento

 believe.cht.fadeintextview.TextView textView = (believe.cht.fadeintextview.TextView) findViewById(R.id.textView); textView.setLetterDuration(250); // sets letter duration programmatically textView.isAnimating(); // returns current animation state (boolean) textView.setText(); // sets the text with animation 

Más información

La biblioteca Fade-In TextView hereda sus propiedades directamente de la clase nativa TextView, lo que significa que todos los métodos nativos TextView son compatibles. Prácticamente no existen limitaciones, incluido el soporte multilínea. La biblioteca también tiene algunos de sus propios métodos y atributos que ofrecen un control total sobre la Vista.