android版本不统一,webview不同版本实现不一致,不同设备厂商也不一致,出现效果也是不一致,还是iOS老铁们幸福,系统实现美滋滋。
这时,有人会问,为什么不用第三方?wtf?第三方?tbs?crosswalk?后者app迅速增大20-40M...,前者的东西,自己定义了video标签,但是第一次为什么还是显示系统的?全屏后返回,webview下面的大白条怎么破?(webview修改的方法不管用,或者是我的方法不对...一句话,开发产品tx的东西能不用就别用,太坑了。。。)
下面的是自己将video标签转化为img标签,然后点击后跳转到新界面自己处理播放逻辑。
public static String parseVideo(String html) {
if (!html.contains("</video>")) {
return html;
}
String style = "<style>.video-main{position:relative;margin:0;padding:0;height:0;padding-bottom:56.25%}.video-main .img{position:absolute;top:0;left:0;z-index:99;width:100%;height:100%!important}.i-icon.play-icon{position:absolute;top:50%;left:50%;z-index:99;width:80px;height:80px;margin-left:-20px;margin-top:-20px}.i-icon.play-icon:before{background:url(http://resource.qingbao.cn/image/medals/play_icon80.png) no-repeat 0 0;background-size:100% auto;width:48px;height:48px}.i-icon:before{content:\"\";position:absolute;top:0;left:0}</style><script>function videoClick(poster,src){window.videolistener.clickVideo(poster,src)}</script>";
StringBuilder stringBuffer = new StringBuilder(html);
stringBuffer.insert(html.indexOf("<head>") + 6, style);
Document document = Jsoup.parse(stringBuffer.toString());
Elements elements = document.getElementsByTag("video");
for (Element element : elements) {
String poster = element.attr("poster");
String src = element.attr("src");
Element elem = document.createElement("div");
elem.addClass("video-main");
//
Element imgElem = document.createElement("img");
imgElem.addClass("img");
imgElem.attr("src", poster);
Element iElem = document.createElement("i");
iElem.addClass("i-icon play-icon");
iElem.attr("onclick", "videoClick('" + poster + "','" + src + "')");
elem.appendChild(imgElem);
elem.appendChild(iElem);
element.replaceWith(elem);
}
return document.toString();
}
webView.addJavascriptInterface(new VideoInterface(activity), "videolistener");
前端监听js
public class VideoInterface {
private BaseActivity aty;
public VideoInterface(BaseActivity activity) {
aty = activity;
}
@JavascriptInterface
public void clickVideo(String poster, String url) {
//此处实现自己挑战
}
}
用到Jsoup,implementation 'org.jsoup:jsoup:1.11.3'
网友评论