Android循环更新TextView

标签 android textview

我正在尝试创建一个循环来更新 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/

相关文章:

java - Android - Java 服务器 AES 加密不起作用 - 不同的 key

Android按钮调用另一个功能

android - 在 v4.3 之前遵守 Android 屏幕方向锁定

android - 在 ListView 中动态更改 TextView 字体颜色

Android - ExtractEditText 类

android - 错误 : Failed to find: com. android.support :support-v4:20. 0.+

java - 如何重复textview?

android - 以编程方式在另一个布局中添加布局

android - 尝试在空对象引用上调用虚拟方法 'java.lang.CharSequence android.widget.TextView.getText()'

android - 验证 Android 应用程序调用 Web api 服务