检测phonegap webview何时完成加载android

时间:2012-08-07 17:23:59

标签: android cordova android-webview

PhoneGap(更具体地说是DroidGap for Android)是否有办法判断其webview何时加载。我想为PhoneGap找到类似的内容:

正常的WebView客户端创建:

mWebView.setWebViewClient(new WebViewClient() {

   public void onPageFinished(WebView view, String url) {
        // do your stuff here
    }
});

像这样创建我的PhoneGap Webview:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_activity);

    if (isOnline() == true) {

         WebSettings settings = mWebView.getSettings(); 
        settings.setAllowFileAccess(true);
        settings.setAppCacheEnabled(true);
        settings.setJavaScriptEnabled(true); 

        mWebView.loadUrl("http://myurl.com");


        mWebView.setWebViewClient(new WebViewClient() {

           public void onPageFinished(WebView view, String url) {
               //hide loading image
               findViewById(R.id.imageLoading1).setVisibility(View.GONE);
               //show webview
               findViewById(R.id.mWebView).setVisibility(View.VISIBLE);
            }
        });
    }
    else {
       //hide loading image
        findViewById(R.id.imageLoading1).setVisibility(View.GONE);
        //show webview
        findViewById(R.id.mWebView).setVisibility(View.VISIBLE);

        Intent myIntent = new Intent(getContext(), LoadScreen.class);

        startActivity(myIntent);
        finish();
    }

}

我的Main_Activity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


     <ImageView android:id="@+id/imageLoading1"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:visibility="visible"
        android:src="@drawable/splash"
        />

      <WebView android:id="@+id/mWebView"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:visibility="gone"
        />



</RelativeLayout>

1 个答案:

答案 0 :(得分:3)

DroidGap没有方法,因为它是一个活动,而不是一个视图。相反,CordovaWebViewClient使用其onPageFinished方法在页面加载完成后向所有插件发送消息。这是插件可用于确定页面是否已完成的内容。相反,您可以在Javascript中检查deviceready事件,该事件应在页面加载后触发。

如果您需要知道WebView何时加载了Java以外的其他任何插件,我强烈建议您自己切换到使用CordovaWebView并实现生命周期事件,因为这样可以更好地控制增强视图。这也意味着您必须确保正确处理使用活动的插件,否则它们将会中断。