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>
答案 0 :(得分:3)
DroidGap没有方法,因为它是一个活动,而不是一个视图。相反,CordovaWebViewClient使用其onPageFinished方法在页面加载完成后向所有插件发送消息。这是插件可用于确定页面是否已完成的内容。相反,您可以在Javascript中检查deviceready事件,该事件应在页面加载后触发。
如果您需要知道WebView何时加载了Java以外的其他任何插件,我强烈建议您自己切换到使用CordovaWebView并实现生命周期事件,因为这样可以更好地控制增强视图。这也意味着您必须确保正确处理使用活动的插件,否则它们将会中断。