我是android开发的新手。
我开发了一个 android 网络应用程序。当我单击该网页的子菜单或链接时,相关文章是使用 XML 格式的 rss 提要从网站获取的。
此过程需要一些时间来加载页面。我想在内容加载时显示进度条。
我试过下面的代码:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
dialog = ProgressDialog.show(this,"","Loading...");
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//to remove title bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//to remove notification bar
setContentView(R.layout.main);
wv = (WebView)findViewById(R.id.webview);
wv.getSettings().setJavaScriptEnabled(true);
wv.setBackgroundColor(0);
wv.setWebViewClient(new WebViewClient() {});
wv.loadUrl("file:///android_asset/HomePage.html");
}
@Override
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
// Save the state of the WebView
wv.saveState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
super.onRestoreInstanceState(savedInstanceState);
// Restore the state of the WebView
wv.restoreState(savedInstanceState);
}
public class mywebclient extends WebViewClient{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
dialog.show();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl("file:///android_asset/HomePage.html");
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
dialog.dismiss();
}
}
}
它只在首页显示进度条,并且在页面完全加载后也没有关闭。
当从该网页单击子菜单或链接时,我应该怎么做才能显示进度条。?提前致谢。
最佳答案
试试这段代码
package your.app;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class Main extends Activity {
WebView webview;
final Activity activity = this;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
Window.PROGRESS_VISIBILITY_ON);
webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
final ProgressDialog progressDialog = new ProgressDialog(activity);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMessage("Loading...please wait");
progressDialog.setCancelable(true);
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
webview.loadUrl("http://www.mysite.com/mobile/");
// WebChromeClient give progress etc info
webview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
progressDialog.show();
progressDialog.setProgress(0);
activity.setProgress(progress * 1000);
progressDialog.incrementProgressBy(progress);
if (progress == 100 && progressDialog.isShowing())
progressDialog.dismiss();
}
});
}
注意:不要忘记更改您的 list 文件以访问互联网
您可以进一步添加功能 返回键 检查互联网连接 隐藏标题栏 显示全屏
关于android - 如何在等待 HttpResponse 时显示进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9912425/