【问题标题】:Appending letters onto a TextField after 100 milliseconds100 毫秒后将字母附加到 TextField
【发布时间】:2014-09-17 13:11:40
【问题描述】:

我正在尝试将特定字符串中的字母附加到 TextField。这是我到目前为止所尝试的。但没有运气。

这里发生的只是等待 100 毫秒,然后直接显示字符串。

outConsole = (TextView) findViewById(R.id.outconsole); 

    int i, j;
    String fin = ""; 
    final String in = "HELLO!"; 

    i = in.length;

    try{
    for(j = 0; j < i; j++){
        Thread.sleep(100);
        fin = fin + in.charAt(j); 
        outConsole.setText(fin);  
    }
    }catch(Exception e){}

}

我如何做到这一点?

我想要这样的东西,但速度较慢: https://www.youtube.com/watch?v=Ff-eDOGLuYw

【问题讨论】:

  • 它不工作。我需要一些帮助。
  • 它不起作用的原因是您正忙于在 UI 线程上循环并且不允许它返回到事件循环。不要那样做。在 X 时间内使某事发生的正确方法是警报或处理程序(或第二个线程,但这在这里太过分了)。请参阅@IllegalArgument 的答案,了解如何执行此操作的一个很好的示例,只需记住在处理完字符串后停止向处理程序发布新事件

标签: android string loops append


【解决方案1】:

尝试使用Handlers。像这样的东西应该可以工作:

Handler handler = new Handler();    
Runnable runnable = new Runnable() {
@Override
public void run() {
  //update your ui
  handler.postDelayed(this, 100);//this restarts the handler better to have some terminating condition
}
};
handler.postDelayed(runnable, 100);//starts the handler first time

【讨论】:

  • 谢谢。会试一试,让你知道。
猜你喜欢
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
相关资源
最近更新 更多