0

我正在开发一个 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");
    }
    }
4

2 回答 2

0

您可以在加载网站之前启动 ProgressDialog 并在加载完成后将其关闭。

代码应如下所示:

ProgressDialog progressDialog = ProgressDialog.show(this, "", "Loading...");
wv.loadUrl("http://www.yourwebsite.com");
progressDialog.dismiss();

编辑:每个点击的新网址的新代码

您应该将此添加到您的 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-11T23:42:42.310 回答
0

如果您的网站是基于 html 而不是服务器端(asp/php 等),您可以将网站打包在应用程序中,这样就不需要互联网。这样做的缺点是更新了 2 个网站。

或者,您可以将加载脚本 (javascript) 添加到网站本身。

于 2012-12-11T23:45:36.657 回答