WebView是一个基于webkit引擎、展现web页面的控件。
代码部分
实例:
mWebView = (WebView)findViewById(R.id.wv_test_view); // 在当前activity打开而不是在浏览器打开 mWebView.setWebViewClient(new WebViewClient());
// Enable Javascript WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true);
String url = "http://www.utovr.com/"; mWebView.loadUrl(url); |
WebView主要API:
// WebView相关类 WebSettings、WebViewClient、WebChromeClient // 前进/后退 // 是否可以后退 mWebView.canGoBack(); // 后退网页 mWebView.goBack(); // 是否可以前进 mWebView.canGoForward(); // 前进网页 mWebView.goForward(); // 以当前的index为起始点前进或者后退到历史记录中指定的steps // 如果steps为负数则为后退,正数则为前进 mWebView.goBackOrForward(steps); // 设置滚动条 // 设置滚动条 mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); // 清除缓存数据 // 清除网页访问留下的缓存 // 由于内核缓存是全局的因此这个方法不仅仅针对webview而是针对整个应用程序 mWebView.clearCache(true); // 清除当前webview访问的历史记录 // 只会webview访问历史记录里的所有记录除了当前访问记录 mWebView.clearHistory(); // 这个api仅仅清除自动完成填充的表单数据,并不会清除WebView存储到本地的数据 mWebView.clearFormData(); // 三种加载方式 // 1.加载远程资源 mWebView.loadUrl("https://www.baidu.com/"); // 2.加载本地资源,工程放在assets目录 mWebView.loadUrl("file:///android_asset/WebClientTest/www/index.html"); // 3.加载手机本地的html页面 mWebView.loadUrl("content://com.android.htmlfileprovider/sdcard/test.html"); |
WebSettings
// Enable Javascript WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true);
//设置自适应屏幕,两者合用 webSettings.setUseWideViewPort(true); // 将图片调整到适合webview的大小 webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
//缩放操作 webSettings.setSupportZoom(true); // 支持缩放,默认为true。是下面那个的前提。 webSettings.setBuiltInZoomControls(true); // 设置内置的缩放控件。若为false,则该WebView不可缩放 webSettings.setDisplayZoomControls(false); // 隐藏原生的缩放控件 //其他细节操作 webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); // 关闭webview中缓存 webSettings.setAllowFileAccess(true); //设置可以访问文件 webSettings.setJavaScriptCanOpenWindowsAutomatically(true); // 支持通过JS打开新窗口 webSettings.setLoadsImagesAutomatically(true); // 支持自动加载图片 webSettings.setDefaultTextEncodingName("utf-8");// 设置编码格式 // 设置缓存 webSettings.setAppCacheEnabled(); webSettings.setAppCachePath(); webSettings.setAppCacheMaxSize(); webSettings.setCacheMode(); |
WebViewClient
/** * 页面载入时调用 */ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); }
/** * 页面加载完成调用 */ @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); }
/** * 加载页面资源时会调用 * 可以在此重载页面,劫持页面 */ @Override public void onLoadResource(WebView view, String url) { super.onLoadResource(view, url); }
/** */ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); }
@Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return super.shouldOverrideUrlLoading(view, request); }
/** * 可以在此重载资源文件 */ @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { return super.shouldInterceptRequest(view, url); }
@Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { return super.shouldInterceptRequest(view, request); }
/** * 页面加载错误事调用 */ @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); } |
参考文档:
博客地址
https://developer.android.com/reference/android/webkit/WebView.html
开源项目
https://github.com/search?utf8=%E2%9C%93&q=android+webview&type=
https://github.com/yale8848/CacheWebView
https://github.com/Tencent/VasSonic
测试地址