前言
使用 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 继续努力!~