自Android 4.4起,Android中的WebView開始基於Chromium(谷歌瀏覽器)支持瀏覽器的一系列功能,webkit解析網頁各個節點,這個改變,使得WebView的性能大幅度提升,並且對HTML5, CSS3, and JavaScript有了更好的支持。
案列主要介紹WebView加載帶有HTML5的視頻標簽<video/>的網頁,點擊網頁里面的鏈接還是在當前的webview里跳轉,不跳到瀏覽器那邊,防止WebView內存泄漏等。
效果圖:
Html網頁圖:
public class MainActivity extends Activity { private WebView webView; private String url = "http://lbh.zhangwoo.cn/?m=home&c=index&a=home"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initWebView(); } @SuppressWarnings("deprecation") @SuppressLint("SetJavaScriptEnabled") private void initWebView() { webView = (WebView) findViewById(R.id.activity_webview); webView.requestFocus(); webView.setHorizontalScrollBarEnabled(false); webView.setVerticalScrollBarEnabled(false); WebSettings web = webView.getSettings(); web.setJavaScriptEnabled(true); web.setBuiltInZoomControls(true); web.setSupportZoom(true); web.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); web.setUseWideViewPort(true); web.setLoadWithOverviewMode(true); web.setSavePassword(true); web.setSaveFormData(true); //web.setBlockNetworkImage(true);// 把圖片加載放在最后來加載渲染 webView.loadUrl(url); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // 重寫此方法表明點擊網頁里面的鏈接還是在當前的webview里跳轉,不跳到瀏覽器那邊 view.loadUrl(url); return true; } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { // 重寫此方法可以讓webview處理https請求 handler.proceed(); } }); } @Override // 設置回退 // 覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法 public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { webView.goBack(); // goBack()表示返回WebView的上一頁面 return true; } return false; } /*** * 防止WebView加載內存泄漏 */ @Override protected void onDestroy() { super.onDestroy(); webView.removeAllViews(); webView.destroy(); }
網絡權限
<uses-permission android:name="android.permission.INTERNET"/>