3

PhoneGap(更具体地说是适用于 Android 的 DroidGap)是否有办法判断其 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>
4

1 回答 1

3

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

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

于 2012-08-07T18:32:23.617 回答