我正在编写一个Android应用程序,我希望在执行httpclient.execute()
时,屏幕变暗,并且会出现一个进度条,直到执行此行,我该怎么办?我的代码是这样的:
ProgressBar x = (ProgressBar) findViewById("R.id.progress") ;
x.setVisibility(ProgressBar.VISIBLE) ;
httpclient.execute()
x.setVisibility(ProgressBar.GONE) ;
但是使用此代码只会显示进度条,屏幕不会变暗。
答案 0 :(得分:4)
首先,我建议您在Async Class中进行所有网络连接。 您可以使用以下模板将代码放入Async Class。 将ProgressDialog作为类变量。
YouClass
{
ProgressDialog dialog;
onCreate(....)
{
//Execute the async task here.
new myNetworkingTask().execute("");
}
private class myNetworkingTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params)
{
//In this method you will do the networking task
httpclient.execute();
}
return "";
}
@Override
protected void onPostExecute(String result) {
//In this method you will hide the progress bar
dialog.dismiss();
}
@Override
protected void onPreExecute() {
//In this method you will display the progress bar.
dialog = ProgressDialog.show(MyActivity.this, "",
"Loading. Please wait...", true);
}
@Override
protected void onProgressUpdate(Void... values) {
}
答案 1 :(得分:0)
如果您的HTTPClient位于Asynctask中,请将您的进度条可见性GONE放入'onPostExecute'
要使屏幕变暗,您需要显示警告对话框/对话框片段并使用进度条设置自定义布局,然后在加载完成后将其关闭。
会自动调暗屏幕。
答案 2 :(得分:0)
在asynctas ..
中添加httpclient.execute()部分在preexecute方法中添加pretask并在postexecute方法中发布任务。