• 腾讯x5Webview取代原生android Webview


    本人开发的开发者技术变现资源聚集地,大家支持下,下面是网址

    https://www.baiydu.com

    一、官方地址: https://x5.tencent.com/tbs/

    二、不需要申请开发者,QQ直接登录,下载即可集成到项目中。

    三、与原生的webview对比优势

    1) 速度快:相比系统webview的网页打开速度有30+%的提升;

    2) 省流量:使用云端优化技术使流量节省20+%;

    3) 更安全:安全问题可以在24小时内修复;

    4) 更稳定:经过亿级用户的使用考验,CRASH率低于0.15%;

    5) 兼容好:无系统内核的碎片化问题,更少的兼容性问题;

    6) 体验优:支持夜间模式、适屏排版、字体设置等浏览增强功能;

    7) 功能全:在Html5、ES6上有更完整支持;

    8) 更强大:集成强大的视频播放器,支持视频格式远多于系统webview;

    9) 视频和文件格式的支持x5内核多于系统内核

    10) 防劫持是x5内核的一大亮点

    这个库解决了我纠结了两天的问题,当前做一个android播放网页视频的功能,视频申请的爱奇艺开放平台,使用原生的webview无法使爱奇艺官方接口反馈的h5页面中嵌套的视频全屏播放,如果这个问题不解决,这个功能我都准备取消了,原生的webview修改了n次,最后测试优酷/腾讯/搜狐这几个网站都你能全屏播放,但就是爱奇艺和另外两个就是步行,用了x5webview后这个问题解决了。爽!!!

    四、代码

    我这里播放全屏我只贴全屏部分的android代码。

    1.为了提高第一次加载速度,在application里初始化

     //初始化腾讯webx5
    
            QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
                @Override
                public void onViewInitFinished(boolean arg0) {
                    // TODO Auto‐generated method stub
                   // Log.d("app", " onViewInitFinished is " + arg0);
                }
                @Override
                public void onCoreInitFinished() {
                    // TODO Auto‐generated method stub
                } };
         //x5内核初始化接口
        QbSdk.initX5Environment(getApplicationContext(), cb);

    2.全屏代码

    package com.lt.HappyMakeMoneryTreasure.UmengShare;
    
    import android.app.Activity;
    import android.content.res.Configuration;
    import android.graphics.PixelFormat;
    import android.os.Bundle;
    import android.view.View;
    import android.webkit.JavascriptInterface;
    import android.widget.Toast;
    import com.lt.HappyMakeMoneryTreasure.R;
    
    import com.lt.HappyMakeMoneryTreasure.UmengShare.WebViewJavaScriptFunction;
    
    public class FullScreenActivity extends Activity {
    
    
        X5WebView webView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.filechooser_layout);
            webView = (X5WebView) findViewById(R.id.web_filechooser);
            //http://www.bilibili.com/video/av14468189
            //http://www.iqiyi.com/v_19rrh6morw.html
            //https://film.sohu.com/album/9398143.html?channeled=1300020002
            webView.loadUrl("http://www.iqiyi.com/v_19rrh6morw.html");
    
            getWindow().setFormat(PixelFormat.TRANSLUCENT);
    
            webView.getView().setOverScrollMode(View.OVER_SCROLL_ALWAYS);
            webView.addJavascriptInterface(new WebViewJavaScriptFunction() {
    
                @Override
                public void onJsFunctionCalled(String tag) {
                    // TODO Auto-generated method stub
    String  ok="adsafas";
                    String  okaa="adsafas";
                    String  ok1="adsafas";
                    String  ok2="adsafas";
                }
    
                @JavascriptInterface
                public void onX5ButtonClicked() {
    
                    FullScreenActivity.this.enableX5FullscreenFunc();
                }
    
                @JavascriptInterface
                public void onCustomButtonClicked() {
                    FullScreenActivity.this.disableX5FullscreenFunc();
    
                }
    
                @JavascriptInterface
                public void onLiteWndButtonClicked() {
                    FullScreenActivity.this.enableLiteWndFunc();
                }
    
                @JavascriptInterface
                public void onPageVideoClicked() {
                    FullScreenActivity.this.enablePageVideoFunc();
                }
            }, "Android");
    
        }
    
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            // TODO Auto-generated method stub
            try {
                super.onConfigurationChanged(newConfig);
                if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
    
                } else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
    
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    
        // /////////////////////////////////////////
        // 向webview发出信息
        private void enableX5FullscreenFunc() {
    
            if (webView.getX5WebViewExtension() != null) {
                Toast.makeText(this, "开启X5全屏播放模式", Toast.LENGTH_LONG).show();
                Bundle data = new Bundle();
    
                data.putBoolean("standardFullScreen", false);// true表示标准全屏,false表示X5全屏;不设置默认false,
    
                data.putBoolean("supportLiteWnd", false);// false:关闭小窗;true:开启小窗;不设置默认true,
    
                data.putInt("DefaultVideoScreen", 2);// 1:以页面内开始播放,2:以全屏开始播放;不设置默认:1
    
                webView.getX5WebViewExtension().invokeMiscMethod("setVideoParams",
                        data);
            }
        }
    
        private void disableX5FullscreenFunc() {
            if (webView.getX5WebViewExtension() != null) {
                Toast.makeText(this, "恢复webkit初始状态", Toast.LENGTH_LONG).show();
                Bundle data = new Bundle();
    
                data.putBoolean("standardFullScreen", true);// true表示标准全屏,会调起onShowCustomView(),false表示X5全屏;不设置默认false,
    
                data.putBoolean("supportLiteWnd", false);// false:关闭小窗;true:开启小窗;不设置默认true,
    
                data.putInt("DefaultVideoScreen", 2);// 1:以页面内开始播放,2:以全屏开始播放;不设置默认:1
    
                webView.getX5WebViewExtension().invokeMiscMethod("setVideoParams",
                        data);
            }
        }
    
        private void enableLiteWndFunc() {
            if (webView.getX5WebViewExtension() != null) {
                Toast.makeText(this, "开启小窗模式", Toast.LENGTH_LONG).show();
                Bundle data = new Bundle();
    
                data.putBoolean("standardFullScreen", false);// true表示标准全屏,会调起onShowCustomView(),false表示X5全屏;不设置默认false,
    
                data.putBoolean("supportLiteWnd", true);// false:关闭小窗;true:开启小窗;不设置默认true,
    
                data.putInt("DefaultVideoScreen", 2);// 1:以页面内开始播放,2:以全屏开始播放;不设置默认:1
    
                webView.getX5WebViewExtension().invokeMiscMethod("setVideoParams",
                        data);
            }
        }
    
        private void enablePageVideoFunc() {
            if (webView.getX5WebViewExtension() != null) {
                Toast.makeText(this, "页面内全屏播放模式", Toast.LENGTH_LONG).show();
                Bundle data = new Bundle();
    
                data.putBoolean("standardFullScreen", false);// true表示标准全屏,会调起onShowCustomView(),false表示X5全屏;不设置默认false,
    
                data.putBoolean("supportLiteWnd", false);// false:关闭小窗;true:开启小窗;不设置默认true,
    
                data.putInt("DefaultVideoScreen", 1);// 1:以页面内开始播放,2:以全屏开始播放;不设置默认:1
    
                webView.getX5WebViewExtension().invokeMiscMethod("setVideoParams",
                        data);
            }
        }
    
    }

    本人创业做的一款androidApp, 下载量已经有2000多万,各种当前热门的网络手机奖励红包全部集成,另外还有热门电影和淘宝高额优惠券!很适合各类型的用户。

     

     

        

  • 相关阅读:
    uniDAC 8.4.1一个严重的bug
    Delphi Event Bus进阶(三)如何使用通道?
    从delphi 10.3到delphi 10.4的改变实务
    uniDAC 8.4.1 database is locked
    调整Delphi IDE代码的行间距
    Deployment Manager now Open Source
    Delphi 10.4.2 Android 64位发布格式之App Bundle格式aab
    每日日报79
    每日日报78
    团队冲刺博客(四)
  • 原文地址:https://www.cnblogs.com/xiaoliao/p/7596914.html
Copyright © 2020-2023  润新知