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); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。