android--------WebView實現 Html5 視頻標簽加載


自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"/>

 

源碼點擊下載:https://github.com/DickyQie/android-webview


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM