有XWalkView webviewclient吗?

Is there a XWalkView webviewclient?

我正在尝试使用 XWalkView 作为我的 android 应用程序中的 webview 替代品。我注意到 XWalkView 对象上没有 setWebViewClient 方法。问题是我想检查页面何时完成 (onPageFinished) 以及何时加载资源 (onLoadResource)。我如何使用 XWalkView 执行此操作?

我使用本教程嵌入 XWalkView

embed crosswalk in android studio

Cross Walk API 为每个组件引入了自己的名称。不仅 WebView 被重命名为 XWalkView,而且 WebViewClient 的对应名称也被命名为 XWalkResourceClientWebChromeClient - XWalkUIClient。因此,您应该使用 setResourceClient 方法并将 XWalkResourceClient 实例传递给它,而不是 setWebViewClient。在此对象中,您可以实现一些必需的方法,例如 onLoadFinished。请咨询 Cross Walk API documentation 了解更多详情。

WebViewClient 示例:

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            //Do stuff
        }
    });

相同但使用 XWalkView 版本:

xWalkView.setResourceClient(new XWalkResourceClient(xWalkView){
        @Override
        public void onLoadFinished(XWalkView view, String url) {
            super.onLoadFinished(view, url);
            //Do Stuff
        }
    });

你可以使用 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);
    }