最近在寫一個(gè)和視頻有關(guān)的項(xiàng)目,用到了騰訊x5內(nèi)核的webview。利用webview調(diào)用本地js文件來播放視頻。事情本身很順利,但是在過程中遇到了一些小插曲,在此記錄一下。
1.去除播放器中的廣告
正常使用的情況下,我們進(jìn)入播放界面會(huì)出現(xiàn)如下情況

屏幕下方總是會(huì)出現(xiàn)一個(gè)煩人的廣告。去除方法很簡單,在webview所在的Activity的onCreat方法中調(diào)用removeAd()即可。
private void removeAd(){
getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
ArrayList<View> outView= new ArrayList<View>();
getWindow().getDecorView().findViewsWithText(outView, "QQ瀏覽器", View.FIND_VIEWS_WITH_TEXT);
if (outView != null && outView.size() > 0) {
outView.get(0).setVisibility(View.GONE);
}
}
});
}
1.全屏問題
當(dāng)點(diǎn)擊全屏后,再返回。出現(xiàn)如下bug(右上角白塊)
因?yàn)槲以贏ctivity中嵌入了webview(紅色方框內(nèi)為webview),當(dāng)視頻播放全屏的時(shí)候,其他控件被webview擠出屏幕范圍,此時(shí)點(diǎn)擊返回時(shí),由于ActionBar寬度計(jì)算錯(cuò)誤,導(dǎo)致右上角有一個(gè)白塊

解決方法如下:
在Activity重寫onConfigurationChanged方法,當(dāng)橫屏(視頻全屏)時(shí),調(diào)用
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
當(dāng)退出全屏?xí)r取消這個(gè)Flage即可。
那么FLAG_LAYOUT_NO_LIMITS是啥意思呢?
FLAG_LAYOUT_NO_LIMITS表示window大小不再不受手機(jī)屏幕大小限制,即window可能超出屏幕之外,這時(shí)部分內(nèi)容在屏幕之外。
我們可以通過設(shè)置Flag來實(shí)現(xiàn)很多功能,這里不一一細(xì)說,有興趣的朋友可以看看這里:
http://blog.csdn.net/i_lovefish/article/details/8050025
代碼如下:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
try {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
} catch (Exception e) {
e.printStackTrace();
}
}