zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Oracle存储过程 一个具体实例
    quartz定时格式配置以及JS验证
    day10_多进程、协程
    day10_锁、守护进程
    day10_单线程和多线程下载文件
    day10_多线程把六个网站写到文件里
    day10_主线程等待子线程的两种方式
    day10_修改父类的构造方法(不重要)和鸭子类型
    day10_hasattr和getattr、setattr、delattr和property的用法
    pycharm professional2019.1破解过程
  • 原文地址:https://www.cnblogs.com/zhangqie/p/6170493.html
Copyright © 2011-2022 走看看