Android WebView視頻全屏顯示解決方案


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


 


寫在最後


如果大家喜歡本文章,請爲本文點贊,你們的支持,是我繼續寫作的動力。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章