如何在TextView中延迟显示文本(逐字逐句)

如何在TextView中延迟显示文本(逐字逐句),第1张

概述我希望TextView中的Text可以逐字显示,甚至可以逐字母显示,就像大多数rpgs和带有文本框的冒险一样.文本流应该是什么样子的一个很好的例子是游戏phoenixwright(http://youtu.be/2OOX2Gv0768?t=1m7s)我到现在为止尝试的是:protectedvoidonCreate(BundlesavedInstanceState){

我希望TextVIEw中的Text可以逐字显示,甚至可以逐字母显示,就像大多数rpgs和带有文本框的冒险一样.文本流应该是什么样子的一个很好的例子是游戏phoenix wright(http://youtu.be/2OOX2Gv0768?t=1m7s)

我到现在为止尝试的是:

protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    String text = "test test test test";    String[] split = text.split(" ");    Deque<String> words = new linkedList<String>();    for (int i = 0; i<split.length; i++)    {        words.addLast(split[i]);    }    showNextWord(words);}public voID showNextWord(final Deque<String> words){    Handler handler = new Handler();     handler.postDelayed(new Runnable()     {         public voID run()         {             TextVIEw t = (TextVIEw) findVIEwByID(R.ID.textBox);            t.append(words.pollFirst()+" ");            if (words.size()>0)                showNextWord(words);        }     }, 500);}

我在模拟器上进行了测试,它似乎性能较低,如果我在显示每个字母后开始延迟,则更多.延迟不一致.

除此之外,我希望有一个更优雅的解决方案.也许某种方式可以更加灵活地延迟?例如.判刑后延误等等.

非常感谢你!

解决方法:

public class Typewriter extends TextVIEw {private CharSequence mText;private int mIndex;private long mDelay = 500; //Default 500ms delaypublic 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;}}

并在您的活动中使用上面的类,如下所示:

    Typewriter writer = new Typewriter(this);    //Add a character every 200ms    writer.setCharacterDelay(200);    writer.animateText("Sample String");

总结

以上是内存溢出为你收集整理的如何在TextView中延迟显示文本(逐字逐句)全部内容,希望文章能够帮你解决如何在TextView中延迟显示文本(逐字逐句)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107319.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存