Android TBS x5内核WebView实现视频全屏播放
发布日期:2021-07-01 00:00:30 浏览次数:2 分类:技术文章

本文共 2330 字,大约阅读时间需要 7 分钟。

前言

使用 TBS x5内核WebView实现视频全屏播放 支持快进 改变屏幕亮度 和音量调节

效果

在这里插入图片描述

代码实现

  • 第一步 在初始化webview 的时候添加配置
mWebView.setWebChromeClient( new com.tencent.smtt.sdk.WebChromeClient(){            /***              * 视频播放相关的方法              * **/            @Override            public View getVideoLoadingProgressView() {                FrameLayout frameLayout = new FrameLayout(MovieWatchActivity.this);                frameLayout.setLayoutParams(new                 FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,                 FrameLayout.LayoutParams.MATCH_PARENT));                return frameLayout;            }            @Override            public void onShowCustomView(View view, IX5WebChromeClient.            CustomViewCallback customViewCallback) {                //播放时横屏幕,如果需要改变横竖屏,只需该参数就行了                showCustomView(view,  customViewCallback);                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);            }            @SuppressLint("SourceLockedOrientationActivity")            @Override            public void onHideCustomView() {                //不播放时竖屏                hideCustomView();                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);            }        });
  • 第二步 写一个方法 在内核回调的时候 触发屏幕旋转的事件
  • 需要一个容器 FrameLayout
/**     * webView 实现全屏播放的配置     */    private void showCustomView(View view, IX5WebChromeClient.CustomViewCallback callback) {        if (customView != null) {            callback.onCustomViewHidden();            return;        }        this.getWindow().getDecorView();        FrameLayout decor = (FrameLayout) getWindow().getDecorView();        fullscreenContainer = new FullscreenHolder(MovieWatchActivity.this);        fullscreenContainer.addView(view, COVER_SCREEN_PARAMS);        decor.addView(fullscreenContainer, COVER_SCREEN_PARAMS);        customView = view;        setStatusBarVisibility(false);        customViewCallback = callback;    }
  • 第三步 屏幕发生变化时 需要一个自定义大小的容器 来装载
/**     * 全屏容器界面     */    static class FullscreenHolder extends FrameLayout {        public FullscreenHolder(Context ctx) {            super(ctx);            setBackgroundColor(ctx.getResources().getColor(android.R.color.transparent));        }        @Override        public boolean onTouchEvent(MotionEvent evt) {            return true;        }    }

总结

2021 继续努力!~

转载地址:https://lvshichunqiu.blog.csdn.net/article/details/113933407 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android Could not resolve all files for configuration ‘:app:_internal_aapt2_binary‘
下一篇:Android Studio Could not resolve all artifacts for configuration ‘:classpath‘.

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年05月06日 20时58分27秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章