问题
I'm trying to use XWalkView as webview replacement in my android app. I noticed that there's no setWebViewClient
method on XWalkView object. The thing is that I want to check when the page is finished (onPageFinished
) and when the resource is loaded (onLoadResource
). How can I do this with XWalkView?
I embed the XWalkView using this tutorial
embed crosswalk in android studio
回答1:
Cross Walk API introduces its own names for every component. Not only the WebView
is renamed to XWalkView
, but also WebViewClient
has its counterpart named XWalkResourceClient
and WebChromeClient
- XWalkUIClient
. So, instead of setWebViewClient
you should use setResourceClient
method and pass XWalkResourceClient
instance to it. In this object you can implement some required methods, for example onLoadFinished
. Please, consult with Cross Walk API documentation for further details.
回答2:
WebViewClient example:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//Do stuff
}
});
Same thing but using XWalkView version:
xWalkView.setResourceClient(new XWalkResourceClient(xWalkView){
@Override
public void onLoadFinished(XWalkView view, String url) {
super.onLoadFinished(view, url);
//Do Stuff
}
});
回答3:
you can use ResourceClient.
class ResourceClient extends XWalkResourceClient {
public ResourceClient(XWalkView xwalkView) {
super(xwalkView);
}
public void onLoadStarted(XWalkView view, String url) {
mProgress = (ProgressBar) findViewById(R.id.progressBar);
mProgress.setVisibility(View.VISIBLE);
super.onLoadStarted(view, url);
Log.d("INFO", "Load Started:" + url);
}
public void onLoadFinished(XWalkView view, String url) {
super.onLoadFinished(view, url);
Log.d("INFO", "Load Finished:" + url);
bottomBar = (BottomBar) findViewById(R.id.bottomBar);
mProgress = (ProgressBar) findViewById(R.id.progressBar);
mProgress.setVisibility(View.GONE);
}
public void onProgressChanged(XWalkView view, int progressInPercent) {
super.onProgressChanged(view, progressInPercent);
Log.d("INFO", "Loading Progress:" + progressInPercent);
mProgress = (ProgressBar) findViewById(R.id.progressBar);
mProgress.setProgress(progressInPercent);
}
来源:https://stackoverflow.com/questions/33228274/is-there-a-xwalkview-webviewclient