Android 加载时显示进度条
我在main.xml中有一个按钮,它将链接到另一个包含服务器信息的xml。在系统加载信息时,包含进度条以避免空白屏幕。我已经完成了下面的代码,但它仍然不是我想要的东西。下面的代码将等待1000毫秒,然后仅执行下一个代码。我如何修改它,使加载等待时间取决于互联网速度,如果互联网连接缓慢,则进度条屏幕将显示更长的时间Android 加载时显示进度条,android,progress-bar,Android,Progress Bar,我在main.xml中有一个按钮,它将链接到另一个包含服务器信息的xml。在系统加载信息时,包含进度条以避免空白屏幕。我已经完成了下面的代码,但它仍然不是我想要的东西。下面的代码将等待1000毫秒,然后仅执行下一个代码。我如何修改它,使加载等待时间取决于互联网速度,如果互联网连接缓慢,则进度条屏幕将显示更长的时间 package com.android.myApps; import android.app.Activity; import android.content.Intent; imp
package com.android.myApps;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;
public class MainScr extends Activity {
private final int WAIT_TIME = 1000;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.MainScr);
}
public void onClickCategory(View view)
{
findViewById(R.id.mainSpinner1).setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
Intent mainIntent = new Intent(MainScr.this, Category.class);
MainScr.this.startActivity(mainIntent);
MainScr.this.finish();
}
}, WAIT_TIME);
}
}
你试过Asyntask吗?您的操作过程将在UI中更新
public final class HttpTask
extends
AsyncTask<String/* Param */, Boolean /* Progress */, String /* Result */> {
private HttpClient mHc = new DefaultHttpClient();
@Override
protected String doInBackground(String... params) {
publishProgress(true);
// Do the usual httpclient thing to get the result
return result;
}
@Override
protected void onProgressUpdate(Boolean... progress) {
// line below coupled with
// getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS)
// before setContentView
// will show the wait animation on the top-right corner
MyActivity.this.setProgressBarIndeterminateVisibility(progress[0]);
}
@Override
protected void onPostExecute(String result) {
publishProgress(false);
// Do something with result in your activity
}
}
您在这里所犯的错误是,您正在将特定时间转储到代码中 你永远不知道要得到多少回应。 你应该遵循以下方法 步骤1在屏幕上显示进度对话框 第二步让下载自己花时间。但它应该在新的线程中完成 步骤3下载完成后,它将发出消息,任务已完成,现在删除该消息 “进度”对话框,然后继续 我在这里粘贴示例代码。希望对您有所帮助
package com.android.myApps;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class MainScr extends Activity
{
private Handler handler;
private ProgressDialog progress;
private Context context;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
context = AncActivity.this;
progress = new ProgressDialog(this);
progress.setTitle("Please Wait!!");
progress.setMessage("Wait!!");
progress.setCancelable(false);
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
progress.dismiss();
Intent mainIntent = new Intent(context, Category.class);
startActivity(mainIntent);
super.handleMessage(msg);
}
};
progress.show();
new Thread()
{
public void run()
{
// Write Your Downloading logic here
// at the end write this.
handler.sendEmptyMessage(0);
}
}.start();
}
}
我想我会帮你的:谢谢你的回答,一切都很好,但是加载图标没有旋转:请尝试在这里使用AsynTask。。它将在短时间内完成您的任务background@Vipul沙阿,我需要一个这样的解决方案,鉴于该类别已被弃用,请您更新此答案以供今天使用。我尝试用Logger替换类别,但没有成功。请帮忙。