Android WebView视频全屏显示解决方案

[亡魂溺海] 提交于 2019-12-08 01:05:32


Android WebView视频全屏显示解决方案


内容简介


Android WebView视频显示解决方案,支持WebView视频全屏显示和隐藏,支持设置视频海报,支持设置WebView加载进度View,支持WebView视频翻转


demo图片展示



核心源码


wv_web_view.setWebChromeClient(new WebChromeClient(){
    Bitmap
mVideoPoster=null
;
    View
mVideoLoadingView=null
;
    View
mFullScreenView
;

   
/**
     *
设置默认的视频海报,也就是当html Video元素初始化完成后,默认显示在video
窗口上的图片
    
* @return
    
*/
   
@Override
   
public
Bitmap getDefaultVideoPoster() {
       
if(mVideoPoster==null
){
           
mVideoPoster=BitmapFactory.decodeResource(getResources(),R.drawable.kgd
);
        }
       
return mVideoPoster
;
    }

   
/**
     *
设置Html video元素的视频加载进度
View
     *
@return
    
*/
   
@Override
   
public
View getVideoLoadingProgressView() {
       
if(mVideoLoadingView==null
){
           
mVideoLoadingView=getLayoutInflater().inflate(R.layout.view_webview_loading,null
);
        }
       
return mVideoLoadingView
;
    }

   
private void
showCustomView(Viewview,CustomViewCallback callback){
       
mFullScreenView
=view;
       
fl_web_view.setVisibility(View.VISIBLE
);
        AnimationHelper.alphaAnimation(
fl_web_view, 0, 1, 500, new
Runnable() {
           
@Override
           
public void
run() {
               
fl_web_view.addView(mFullScreenView
);
            }
        });
    }

   
/**
     *
要想让html video元素支持全屏播放,必须重载这个函数,当用户点击video元素上的全屏按钮时,WebView
会调用这个函数来全屏显示视频
    
* @param
view
    
* @param
callback
    
*/
   
@Override
   
public void
onShowCustomView(View view,CustomViewCallback callback) {
       
super
.onShowCustomView(view, callback);
        showCustomView(view,callback);
    }

   
/**
     *
WebView
需要关闭全屏窗口的时候,回调这个函数,必须要重载这个函数,否则视频全屏播放窗口无法关闭
    
*/
   
@Override
   
public void
onHideCustomView() {
       
super
.onHideCustomView();
       
if(mFullScreenView==null) return
;
       
fl_web_view.removeView(mFullScreenView
);
        AnimationHelper.alphaAnimation(
fl_web_view, 1, 0, 500, new
Runnable() {
           
@Override
           
public void
run() {
               
fl_web_view.setVisibility(View.GONE
);
            }
        });
    }
});


 


自定义WebView默认视频海报


/**
     *
设置默认的视频海报,也就是当html Video元素初始化完成后,默认显示在video
窗口上的图片
    
* @return
    
*/
   
@Override
   
public
Bitmap getDefaultVideoPoster() {
       
if(mVideoPoster==null
){
           
mVideoPoster=BitmapFactory.decodeResource(getResources(),R.drawable.kgd
);
        }
       
return mVideoPoster
;
    }


自定义WebView视频加载进度View


/**
     *
设置Html video元素的视频加载进度
View
     *
@return
    
*/
   
@Override
   
public
View getVideoLoadingProgressView() {
       
if(mVideoLoadingView==null
){
           
mVideoLoadingView=getLayoutInflater().inflate(R.layout.view_webview_loading,null
);
        }
       
return mVideoLoadingView
;
    }


WebView视频全屏显示和隐藏


private void showCustomView(View view,CustomViewCallback callback){
       
mFullScreenView
=view;
       
fl_web_view.setVisibility(View.VISIBLE
);
        AnimationHelper.alphaAnimation(
fl_web_view, 0, 1, 500, new
Runnable() {
           
@Override
           
public void
run() {
               
fl_web_view.addView(mFullScreenView
);
            }
        });
    }

   
/**
     *
要想让html video元素支持全屏播放,必须重载这个函数,当用户点击video元素上的全屏按钮时,WebView
会调用这个函数来全屏显示视频
    
* @param
view
    
* @param
callback
    
*/
   
@Override
   
public void
onShowCustomView(View view,CustomViewCallback callback) {
       
super
.onShowCustomView(view, callback);
        showCustomView(view,callback);
    }

   
/**
     *
WebView
需要关闭全屏窗口的时候,回调这个函数,必须要重载这个函数,否则视频全屏播放窗口无法关闭
    
*/
    
@Override
   
public void
onHideCustomView() {
       
super
.onHideCustomView();
       
if(mFullScreenView==null) return
;
       
fl_web_view.removeView(mFullScreenView
);
        AnimationHelper.alphaAnimation(
fl_web_view, 1, 0, 500, new
Runnable() {
           
@Override
           
public void
run() {
               
fl_web_view.setVisibility(View.GONE
);
            }
        });
    }


WebView视频翻转


要想让Activity页面翻转的时候Activity不被重建,我们必须要在manifest文件里面设置Activityandroid:configChanges属性,同时为了让视频的显示效果更好,建议开启Activity的硬件加速,示例代码如下:
<activity android:name=".MainActivity"

    android:configChanges="orientation|keyboardHidden|screenSize"

    android:screenOrientation="fullUser"

    android:hardwareAccelerated="true">

    <intent-filter>

        <action android:name="android.intent.action.MAIN" />



        <category android:name="android.intent.category.LAUNCHER" />

    </intent-filter>

</activity>


 


源码下载


下载地址:http://download.csdn.net/download/kgdwbb/9739590


 


写在最后


如果大家喜欢本文章,请为本文点赞,你们的支持,是我继续写作的动力。


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!