騰訊x5Webview取代原生android Webview

本人開發的開發者技術變現資源彙集地,你們支持下,下面是網址html

https://www.baiydu.comandroid

 

 

 

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

2、不須要申請開發者,QQ直接登陸,下載便可集成到項目中。安全

3、與原生的webview對比優點網絡

1) 速度快:相比系統webview的網頁打開速度有30+%的提高;app

2) 省流量:使用雲端優化技術使流量節省20+%;ide

3) 更安全:安全問題能夠在24小時內修復;測試

4) 更穩定:通過億級用戶的使用考驗,CRASH率低於0.15%;字體

5) 兼容好:無系統內核的碎片化問題,更少的兼容性問題;優化

6) 體驗優:支持夜間模式、適屏排版、字體設置等瀏覽加強功能;

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

8) 更強大:集成強大的視頻播放器,支持視頻格式遠多於系統webview;

9) 視頻和文件格式的支持x5內核多於系統內核

10) 防劫持是x5內核的一大亮點

這個庫解決了我糾結了兩天的問題,當前作一個android播放網頁視頻的功能,視頻申請的愛奇藝開放平臺,使用原生的webview沒法使愛奇藝官方接口反饋的h5頁面中嵌套的視頻全屏播放,若是這個問題不解決,這個功能我都準備取消了,原生的webview修改了n次,最後測試優酷/騰訊/搜狐這幾個網站都你能全屏播放,但就是愛奇藝和另外兩個就是步行,用了x5webview後這個問題解決了。爽!!!

4、代碼

我這裏播放全屏我只貼全屏部分的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多萬,各類當前熱門的網絡手機獎勵紅包所有集成,另外還有熱門電影和淘寶高額優惠券!很適合各種型的用戶。

 

相關文章
相關標籤/搜索