Android-Zeichen für Zeichen zeigen Textanimationen an


Answers

Verwenden Sie die Schreibmaschinen-Klasse von Devunwired

dann im Layout:

<com.example.fmm.Typewriter
    android:id="@+id/typewriter"
    android:layout_alignParentTop="true"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

Code in der Aktivität:

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

Jeder kennt eine effiziente Methode, um eine Animation auszuführen, die nur einen Text, Zeichen für Zeichen, anzeigen muss:

T
Th
Thi
Dies
Das ich
Das ist
...

und so weiter.

Vielen Dank!




Diese neue Kopie für Devunwired mit XML-Layout

    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;
    }
}

Code verwenden

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

Definieren Sie dann textView in classStart




Die meisten der oben genannten Lösungen werfen verschiedene Fehler auf. Ich schätze, die Lösungen sind alt. Ich stolperte über dieses Android-Studio-Plugin und es funktioniert wie Charme.

1. Installation von AutoTypeTextView ist preety einfach. Fügen Sie einfach build.gradle hinzu

kompiliere 'com.krsticdragan: autotyptextview: 1.1'

2. Fügen Sie einen neuen Namespace hinzu, mit dem Sie AutoTypeTextView hinzufügen und seine Tags verwenden können.

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

Daher sollte dein Root-Layout so aussehen

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:attv="http://schemas.android.com/apk/res-auto"

  1. Fügen Sie dies Ihrer XML-Datei hinzu.

    <com.dragankrstic.autotypetextview.AutoTypeTextView android:id="@+id/lblTextWithoutMistakes" android:layout_width="wrap_content" android:layout_height="wrap_content" attv:animateTextTypeWithoutMistakes="Hello World!" />

Mit diesen drei Schritten können Sie gut gehen. Weitere Informationen finden Sie in der Dokumentation




Links