6

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

我使用本教程嵌入了 XWalkView

在android studio中嵌入人行横道

4

3 回答 3

19

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

于 2015-12-30T19:47:01.853 回答
5

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
        }
    });
于 2016-09-21T17:30:12.990 回答
2

你可以使用资源客户端。

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);
    }
于 2017-01-05T14:21:11.500 回答