mel*_*tcs 0 android progress-bar
我在main.xml中有一个按钮,它将链接到另一个xml,其中包含来自服务器的信息.我在系统加载信息时包含进度条以避免出现空白屏幕.我已经完成了下面的代码,但它仍然不是我想要的东西.下面的代码将"等待"1000毫秒,然后只执行下一个代码.如何修改它,以便加载"等待时间"将取决于互联网速度,如果互联网连接速度慢,那么进度条屏幕将显示更长时间.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
Vip*_*hah 12
你在这里犯的错误是你将特定的时间倾注到你的代码中你永远不知道获得响应需要多少时间.你应该遵循以下方法
步骤1在屏幕上显示进度对话框
第2步让下载花费自己的时间.但它应该在新的线程中完成
步骤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();
}
}
Run Code Online (Sandbox Code Playgroud)