我正在尝试创建一个循环来更新 TextView。 这个想法是创建某种进度指示器,这将增加 加载百分比。
这是我尝试过的,但结果是我只看到循环的最后一次更新,所以我得到“100%”,没有增量。
runOnUiThread(new Runnable() {
public void run() {
final TextView progesss = (TextView)findViewById(R.id.progress);
for(int k=1 ; k<=100; k++)
{
progesss.setText(String.valueOf(k) + "%");
try {
Thread.sleep(15);
} catch(InterruptedException e) {
}
}
}
});
关于如何实现我的目标有什么想法吗? 谢谢!
最佳答案
您的Runnable
在执行Thread.sleep
时会阻塞UI线程。您应该再次发布一个新的 Runnable
,而不是 sleep 。尝试这样的事情:
final Handler handler = new Handler();
handler.post( new Runnable(){
private int k = 0;
public void run() {
final TextView progess = (TextView)findViewById(R.id.progress);
progess.setText(String.valueOf(k) + "%");
k++;
if( k <= 100 )
{
// Here `this` refers to the anonymous `Runnable`
handler.postDelayed(this, 15);
}
}
});
这将使UI线程有机会在每次调用之间运行,让它做一些事情,比如处理输入和在屏幕上绘制东西。
关于Android循环更新TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14074570/