WebView 实现全屏播放视频的示例代码
最近要支持一个视频挑战的活动,要求WebView能全屏播放视频,现在把Android端实现的方法分享给大家。
要实现全屏需要给WebView设置WebChromeClient并覆写onShowCustomView和onHideCustomView()两方法:
webView.setWebChromeClient(newWebChromeClient(){
@Override
publicvoidonShowCustomView(Viewview,CustomViewCallbackcallback){
//此处的view就是全屏的视频播放界面,需要把它添加到我们的界面上
}
@Override
publicvoidonHideCustomView(){
//退出全屏播放,我们要把之前添加到界面上的视频播放界面移除
}
});
为了实现全屏的效果,需要将视频界面添加我们界面的最上层,有两种方式,一种是添加到ContentView中,核心代码如下:
contentParentView=findViewById(android.R.id.content);
webView.setWebChromeClient(newWebChromeClient(){
@Override
publicvoidonShowCustomView(Viewview,CustomViewCallbackcallback){
contentParentView.addView(view);
}
@Override
publicvoidonHideCustomView(){
contentParentView.removeView(fullScreenView);
}
});
另一种是添加到WindowManager中,完整代码如下:
publicclassWebActivityextendsAppCompatActivity{
...
privateWindowManagerwindowManager;
privateViewfullScreenView=null;
@Override
protectedvoidonResume(){
super.onResume();
//如果之前处于全屏状态,重新进入后需要再次调用全屏
if(fullScreenView!=null)fullScreen(fullScreenView);
}
@Override
publicvoidonBackPressed(){
//全屏状态点击返回退出全屏
if(fullScreenView!=null){
windowManager.removeViewImmediate(fullScreenView);
fullScreenView=null;
}else{
super.onBackPressed();
}
}
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
windowManager=getWindowManager();
webView.setWebChromeClient(newWebChromeClient(){
@Override
publicvoidonShowCustomView(Viewview,CustomViewCallbackcallback){
//此处的view就是全屏的视频播放界面,需要把它添加到我们的界面上
windowManager.addView(view,newWindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_APPLICATION));
//去除状态栏和导航按钮
fullScreen(view);
fullScreenView=view;
}
@Override
publicvoidonHideCustomView(){
//退出全屏播放,我们要把之前添加到界面上的视频播放界面移除
windowManager.removeViewImmediate(fullScreenView);
fullScreenView=null;
}
});
}
privatevoidfullScreen(Viewview){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT){
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
|View.SYSTEM_UI_FLAG_FULLSCREEN
|View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}else{
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
|View.SYSTEM_UI_FLAG_FULLSCREEN
|View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。