如何在Android中以编程方式在屏幕上显示进度条?

时间:2013-08-31 12:31:03

标签: android android-asynctask android-progressbar

我有一个名为 BookAdder 的班级。它扩展了 AsyncTask ,它应该在应用程序上添加一个书籍列表。还有一些活动叫它,我想在屏幕中心显示一个进度条。

现在,我不知道如果没有在XML文件中定义活动,如何显示进度条? 有没有办法创建一个进度条然后添加它以显示或不显示?

由于

2 个答案:

答案 0 :(得分:0)

试试这个

    new asyncTask(Your_context).execute();


    private class asyncTask extends AsyncTask<Void, Void, Boolean> 
    {
        Context context;
        ProgressDialog pd;

        asyncTask(Context context)
        {
            this.context = context; 
            pd = new ProgressDialog(activityContext);
        } 
        protected void onPreExecute() 
        {
            pd.setTitle("Loading..");
            pd.setMessage("Please wait ...");
            pd.setCancelable(false);
            pd.show();
        } 
        protected void onPostExecute(Boolean result)
        {
                   // Update your UI. 
            if(pd.isShowing()) pd.dismiss();
        } 

        @Override
        protected Boolean doInBackground(Void... params) 
        {
               // Get all data from web.
        }

@Override
        protected void onProgressUpdate(String... values) 
        {
            super.onProgressUpdate(values);

            pd.setMessage("Please Wait..." + values[0].toString());
        }

        public class Progress 
        {
            public asyncTask task;

            public Progress(asyncTask task) 
            {
                this.task = task;
            }

            public void publish(String value) 
            {
                task.publishProgress(value);
            }
        }
    }

尝试使用publishProgress(updating_values);

调用进度更新

答案 1 :(得分:0)

你可以这样做:

new DownloadData(yourClass.this).execute();


public class DownloadData extends AsyncTask<Void,Void,Void>
{
  ProgressBar pBar;
  Context context;

    public DownloadData(context con)
    {
            context = con;
             pBar = new ProgressBar(context);
            LinearLayout layout = (LinearLayout) context.findViewById(R.id.ProgressBar);
            layout.addView(pBar);
            pBar.setVisibility(View.VISIBLE);
    }

    @Override
    protected Void doInBackgroud(Void.. params)
    {
        // download data
    }


@Override
protected void onPostExecute(Void result) 
{
    super.onPostExecute(result);
    if (pBar!=null) {
        ((LinearLayout)pBar.getParent()).removeView(pBar);
    }
}
}