如何在Android中显示“正在加载”状态?

时间:2012-02-23 05:47:52

标签: java android download

我正在制作一个Android应用程序,它必须通过Internet加载一些数据(只有一些数据 - 不是全部)。因此,当数据加载,并且互联网连接速度很慢时,我想显示一个"正在加载......"用户的图标。

那我该怎么做呢?显示"正在加载......"数据在后台加载时的图标,当它完全加载时,隐藏图标?

提前致谢!

4 个答案:

答案 0 :(得分:21)

为您的状态使用异步任务。

new SomeTask(0).execute();

/** Inner class for implementing progress bar before fetching data **/
private class SomeTask extends AsyncTask<Void, Void, Integer> 
{
    private ProgressDialog Dialog = new ProgressDialog(yourActivityClass.this);

    @Override
    protected void onPreExecute()
    {
        Dialog.setMessage("Doing something...");
        Dialog.show();
    }

    @Override
    protected Integer doInBackground(Void... params) 
    {
        //Task for doing something 

        return 0;
    }

    @Override
    protected void onPostExecute(Integer result)
    {

        if(result==0)
        {
             //do some thing
        }
        // after completed finished the progressbar
        Dialog.dismiss();
    }
}

答案 1 :(得分:2)

在任务完成时使用AsyncTask和进度对话框。这样做..

答案 2 :(得分:1)

使用asynctask进行后台操作,然后显示进度对话框,如下所示

 private class ProgressTask extends AsyncTask<String, Void, Boolean> {
    private ProgressDialog dialog;
    List<Message> titles;
    private ListActivity activity;
    //private List<Message> messages;
    public ProgressTask(ListActivity activity) {
        this.activity = activity;
        context = activity;
        dialog = new ProgressDialog(context);
    }



    /** progress dialog to show user that the backup is processing. */

    /** application context. */
    private Context context;

    protected void onPreExecute() {
        this.dialog.setMessage("Progress start");
        this.dialog.show();
    }

        @Override
    protected void onPostExecute(final Boolean success) {
            List<Message> titles = new ArrayList<Message>(messages.size());
            for (Message msg : messages){
                titles.add(msg);
            }
            MessageListAdapter adapter = new MessageListAdapter(activity, titles);
            activity.setListAdapter(adapter);
            adapter.notifyDataSetChanged();

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

        if (success) {
            Toast.makeText(context, "OK", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(context, "Error", Toast.LENGTH_LONG).show();
        }
    }

    protected Boolean doInBackground(final String... args) {
        try{    
            BaseFeedParser parser = new BaseFeedParser();
            messages = parser.parse();


            return true;
         } catch (Exception e){
            Log.e("tag", "error", e);
            return false;
         }
      }


}

}

答案 3 :(得分:0)

在onCreate方法中:

WebView mWebView;
ProgressDialog pgDiagWebView;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);
    pgDiagWebView = ProgressDialog.show(CreateAccountWebView.this, "Loading", "Wait", true);
    mWebView = (WebView) findViewById(R.id.registerWebView);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.setWebViewClient(new ResgisterWebViewClient()); 
    mWebView.loadUrl("http://www.google.com/");
}

class ResgisterWebViewClient extends WebViewClient {  
    @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);
        pgDiagWebView.dismiss();
    }
}