我正在开发一个Android应用程序,它简单地将一个网站的移动版本包装在一个本地应用程序容器中。
目前我调用(示例):
wv.loadUrl("http://www.websitehere.com/");我已经导出了整个项目并在我的手机上进行了测试,当在应用程序中加载一个新页面时,它需要几分钟,但是不在浏览器上没有加载指示器,所以它是当前页面上的一个静止屏幕几分钟(取决于互联网速度),而新页面加载。
什么是最好的方式来实现一个加载指示器,使用户知道一个新的页面实际上正在加载?
编辑:已添加加载,但仅适用于应用程序的初始页面加载。
public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ProgressDialog pd = ProgressDialog.show(this, "Page is", "Loading...",true);
WebView wv = (WebView)findViewById(R.id.my_webview);
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if(pd.isShowing()&&pd!=null);
{
pd.dismiss();
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
pd = ProgressDialog.show(this, "Page is", "Loading...", true);
view.loadUrl(url);
return true;
}
});
wv.loadUrl("http://www.websitehere.com");
}
}发布于 2012-12-12 07:42:42
您可以在加载网站之前启动ProgressDialog,并在加载完成后将其清除。
代码应该如下所示:
ProgressDialog progressDialog = ProgressDialog.show(this, "", "Loading...");
wv.loadUrl("http://www.yourwebsite.com");
progressDialog.dismiss();编辑:每点击一个新的url都会有新的代码
您应该将其添加到您的WebViewClient中,并使您的(ProgressDialog) pd成为成员变量。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
pd = ProgressDialog.show(this, "Page is:", "Loading...",true);
view.loadUrl(url);
return true;
}编辑:
您应该将ProgressDialog pd设置为成员变量。
public class Main extends Activity {
private ProgressDialog pd;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pd = ProgressDialog.show(this, "Page is", "Loading...",true);
WebView wv = (WebView)findViewById(R.id.my_webview);
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if(pd.isShowing()&&pd!=null);
{
pd.dismiss();
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
pd = ProgressDialog.show(Main.this, "Page is", "Loading...", true);
}
});
wv.loadUrl("http://www.websitehere.com");
}
}编辑:使用onPageStarted。
发布于 2012-12-12 07:45:37
如果你的网站是基于html的,而不是服务器端(asp/php等),你可以在应用程序中打包网站,这样就不需要互联网了。这样做的缺点是更新2个网站。
或者,您可以将加载脚本(javascript)添加到网站本身。
https://stackoverflow.com/questions/13830342
复制相似问题