webview加载html代码(包含播发腾讯视频的分享代码)

来源:互联网 发布:c数据库入门经典 编辑:程序博客网 时间:2024/05/21 17:50

腾讯视频下方的分享点击之后会出现三个不同的分享地址,如图:,第一个好像是基于falsh的,第二个是基于falsh播放的,由于android4.+不再支持falsh插件,所以这两种方式都不能使用,第一种会直接白屏,第二种会显示插件无法加载,第三种可以正常使用。

 webView = (WebView) findViewById(R.id.webview);        /**/        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            webView.getSettings().setMixedContentMode(                    WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);        }        webView.setWebViewClient(new WebViewClient() {            @Override            public void onReceivedSslError(WebView view,                                           SslErrorHandler handler, SslError error) {                // TODO Auto-generated method stub                // handler.cancel();// Android默认的处理方式                handler.proceed();// 接受所有网站的证书            }        });//注意,4.+不在支持flash,不能使用embed标签了        String html1 = "<iframe frameborder=\"0\" width=\"1080\" height=\"1000\" src=\"https://v.qq.com/iframe/player.html?vid=g0024gbjoue&tiny=0&auto=0\" allowfullscreen></iframe>";        webView.getSettings().setJavaScriptEnabled(true);        webView.getSettings().setPluginState(WebSettings.PluginState.ON);        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);        webView.getSettings().setAllowFileAccess(true);        webView.getSettings().setDefaultTextEncodingName("UTF-8");        webView.getSettings().setLoadWithOverviewMode(true);        webView.getSettings().setUseWideViewPort(true);        webView.getSettings().setDomStorageEnabled(true);        String content = "<p><font color='red'>hello world!</font></p>";        //加载普通的html代码        //webView.loadData(content, "text/html", "UTF-8");        //加载视频连接        //  webView.loadUrl("http://player.youku.com/embed/XNTM5MTUwNDA0");        //加载asset下的html代码        //webView.loadUrl("file:///android_asset/test.html");       //加载html视频代码         webView.loadData(html1, "text/html", "UTF-8");    }
注意:根据网上的资料,好多都说要开启硬件加速,但是我用已有的手机测试了下,好像没什么关系(4.4的和5.0的)?

  android:hardwareAccelerated="true"

对于加载assets下的html,

  位置是project-项目名字-app-main;在这个下面新建assets文件夹,不是在res,切记。测试的html代码如下,里面的链接可能失效,去腾讯视频再哪一个就行了


<!doctype html><html lang="zh-hans"><head>    <meta charset="UTF-8">    <title>JavaScript</title></head><body><h1>标题</h1><iframe frameborder="0" width="640" height="498"        src="https://v.qq.com/iframe/player.html?vid=k0531d46jwe&tiny=0&auto=0"        allowfullscreen></iframe></body></html>


重要补充:20170810

对于webview.loadUrl();,如果你需要播放分享的地址,那么就不能传入带html标签的那一整段代码,因为那一段代码中包含宽度和高度,这样的话当你使用事会发现,不管你怎么调整webview的宽高都无济于事。所以,在传入的时候,只传入那个视频的地址。

对于视频的全屏监听:打开地址后会发现,点击暂停和播放好用,但是全屏就不好用了。这里有两种解决办法:

1.在webview右下角蒙一层透明的布局,点击之后去触发全屏的方法。(这个方法尤其对于当webview时recycleview的item,点击需要放大好用。当然,你要是想去监听暂停、全屏等等也不是没有办法

2.第一种是一个投机取巧的方法,第二个就是真的方法了。参照如下博主的:http://blog.csdn.net/lx331675996/article/details/50634670,就可以实现了。

说了监听全屏,那对于全屏实现呢

1.首先,竖屏的时候,就是正常的大小,不需要做操作;放大的时候,既是全屏的时候,需要手机横屏,对于横竖屏切换会引发生命周期的改变,不做赘述。去activity节点下设置

android:configChanges="keyboardHidden|orientation|screenSize"
设置了之后,对于横竖屏的切换,只会走onConfigChanged()方法,如果是activity,就去拿到layoutPr...重新设置宽高。如果是webview在dialog里面,虽然也可以去设置dialog
的宽高,但是好像有问题?反正,我这样设置是有问题的,解决办法就是去onConfigChange中重新写弹出dialog的方法;另外,还需要考虑到横屏状态用户关闭视频需要回到竖屏状态。



原创粉丝点击