Android AsyncTask对话框圆形化

7
我整天一直在寻找一些示例代码或教程,以便创建一个进度圆圈,而任务正在进行中。此任务完成的时间会相应地变化,有很多样本可以使用Thread.sleep(xxxx)使其循环,但这不是有效的方法。这就是我想做的:我想在单击按钮后加载从Web服务使用JSON填充的ListView。 ListView加载得非常完美,但需要大约5-10秒钟才能加载完成,具体取决于大小,因此我想在用户等待时显示旋转圆圈。请问有人可以分享如何实现这一点的示例代码吗?
谢谢

我的回答对你有帮助吗? - brian
如果您找到了答案,请检查一个被接受的答案。 - brian
请将以下与编程有关的内容从英语翻译为中文。仅返回翻译后的文本:✓ - brian
3个回答

35

调用new Load().execute();

class Load extends AsyncTask<String, String, String> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            ProgressDialog progDailog = new ProgressDialog(Activity.this);
            progDailog.setMessage("Loading...");
            progDailog.setIndeterminate(false);
            progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            progDailog.setCancelable(true);
            progDailog.show();
        }
        @Override
        protected String doInBackground(String... aurl) {
            //do something while spinning circling show
            return null;
        }
        @Override
        protected void onPostExecute(String unused) {
            super.onPostExecute(unused);
            progDailog.dismiss();
        }
    }

2
请向左打勾。 - brian
关于在Load类中使用ProgressDialog(Activity.this)会出现错误的问题。当然会出错。我们应该使用什么? - Boris Karloff
1
@Boris Karloff,你必须使用你的Asynctask所在的Activity名称。如果这个继承自AsyncTask的私有类“Load”位于“MainActivity”类中,则必须使用“ProgressDialog(MainActivity.this)”代替。 - DuKes0mE

11
private class LoadAssync extends AsyncTask<String, Void, Void> {



    protected void onPreExecute() {

        ProgressDialog dialog;
                   dialog.setMessage("Loading...");
    dialog.show();
    }

    protected Void doInBackground(final String... args) {
        // you can do the code here
        return null;


    }

    protected void onPostExecute(final Void unused) {

        if (dialog.isShowing()) {
            dialog.dismiss();
        }

    }
}

你可以这样调用异步函数

 LoadAssync mAsyync=new LoadAssync();
 mAsyync.execute(null);

3
您可以尝试以下代码:
progDailog = ProgressDialog.show(loginAct,"Process ", "please wait....",true,true);

new Thread ( new Runnable()
{
     public void run()
     {
      // your code goes here
     }
}).start();

 Handler progressHandler = new Handler() 
 {

     public void handleMessage(Message msg1) 
     {

         progDailog.dismiss();
         }
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接