android WebView全屏观看视频 全屏观看直播

前言

    如果不做处理的话,App里的WebView是不会自适应网页的全屏按钮点击变成全屏播放的。这篇文章就是为了解决这个问题,文章中的代码博主亲测有效,粘贴即食,可直接食用。

正文

1.改清单文件

    在你放置WebView的Activity的声明中加上以下代码:

    

            android:hardwareAccelerated ="true"
            android:configChanges="orientation|screenSize|keyboardHidden"

2.改Java类

    1.对WebView进行初始化设置:

    

    @JavascriptInterface
    private void initWebView() {
        WebSettings mWebSettings = mWebView.getSettings();
        mWebSettings.setSupportZoom(true);
        mWebSettings.setLoadWithOverviewMode(true);
        mWebSettings.setUseWideViewPort(true);
        mWebSettings.setDefaultTextEncodingName("utf-8");
        mWebSettings.setLoadsImagesAutomatically(true);
        mWebSettings.setBlockNetworkImage(false);//解决图片不显示
        mWebSettings.setTextZoom(100);//设置默认缩放比例,防止网页跟随系统字体大小变化
        //待定项目@{
        mWebSettings.setAllowFileAccess(true);
        mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        mWebSettings.setDomStorageEnabled(true);// 必须保留,否则无法播放优酷视频,其他的OK
        try {
            if (Build.VERSION.SDK_INT >= 16) {
                Class<?> clazz = mWebSettings.getClass();
                Method method = clazz.getMethod("setAllowUniversalAccessFromFileURLs", boolean.class);
                if (method != null) {
                    method.invoke(mWebSettings, true);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        mWebSettings.setPluginState(WebSettings.PluginState.ON);
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        //@}
        //调用JS方法.安卓版本大于17,加上注解 @JavascriptInterface
        mWebSettings.setJavaScriptEnabled(true);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            mWebSettings.setMixedContentMode(android.webkit.WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }


        mWebView.setWebChromeClient(webChromeClient);
    }

标明待定项目的属性设置可有可无,不影响本文说的功能实现。

    2.实现chrome代理:

    

    WebChromeClient webChromeClient = new WebChromeClient() {

        WebChromeClient.CustomViewCallback mCallback;

        @Override
        public void onShowCustomView(View view, CustomViewCallback callback) {
            fullScreen();
            mCallback = callback;
            super.onShowCustomView(view, callback);
        }

        @Override
        public void onHideCustomView() {
            fullScreen();
            super.onHideCustomView();
        }

    };
    private void fullScreen() {
        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            LogUtil.i(TAG+" 横屏");
        } else {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            LogUtil.i(TAG+" 竖屏");
        }
    }

3.重写onConfigurationChanged方法:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        switch (newConfig.orientation) {
            case Configuration.ORIENTATION_LANDSCAPE:
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
                break;
            case Configuration.ORIENTATION_PORTRAIT:
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
                break;
        }
    }

OK,按照以上步骤粘贴完之后就大功告成了!你可以在直播平台里复制一个链接到该页面去打开,然后点击全屏观看直播测试一下。

    如果这篇文章帮到你了给个免费的点赞和关注吧,谢谢啦~

    遇到问题可以在下方留言。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JesseAndroid

每一份支持都是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值