安卓webview无法全屏播放iframe腾讯、优酷视频
先上代码吧
public class MainActivity extends AppCompatActivity {
static final String iframeStr = "";
private WebView videoWebView;
private FrameLayout fullScreenView;
private View customView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fullScreenView = (FrameLayout) findViewById(R.id.video_fullscreen);
videoWebView = (WebView) findViewById(R.id.webView);
WebSettings settings = videoWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setDatabaseEnabled(true);
settings.setAppCacheEnabled(true);
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
settings.setPluginState(WebSettings.PluginState.ON);
settings.setAllowFileAccess(true);
settings.setLoadWithOverviewMode(true);
settings.setDomStorageEnabled(true);
settings.setUseWideViewPort(true);
videoWebView.setWebChromeClient(new MyWebChromeClient());
videoWebView.setWebViewClient(new MyWebViewClient());
videoWebView.loadData(iframeStr,"text/html","utf-8");
}
class MyWebViewClient extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
}
class MyWebChromeClient extends WebChromeClient{
private CustomViewCallback customViewCallback;
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
videoWebView.setVisibility(View.INVISIBLE);
// 如果一个视图已经存在,那么立刻终止并新建一个
if (customView != null) {
callback.onCustomViewHidden();
return;
}
fullScreenView.addView(view);
customView = view;
customViewCallback = callback;
fullScreenView.setVisibility(View.VISIBLE);
}
@Override
public void onHideCustomView() {
if (customView == null)// 不是全屏播放状态
return;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
customView.setVisibility(View.GONE);
fullScreenView.removeView(customView);
customView = null;
fullScreenView.setVisibility(View.GONE);
customViewCallback.onCustomViewHidden();
videoWebView.setVisibility(View.VISIBLE);
}
}
@Override
protected void onResume() {
super.onResume();
if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
videoWebView.resumeTimers();
}
@Override
protected void onPause() {
super.onPause();
videoWebView.pauseTimers();
}
@Override
protected void onDestroy() {
super.onDestroy();
videoWebView.destroy();
}
}
就是用一个webview显示一个视频(不是一个视频网页,只是一个视频),然后我使用的是iframe的链接(就是腾讯视频分享那里的通用代码)。我参照了网上很多关于全屏显示的问题,基本代码都是这样,但是并没有用,感觉没有调用到那两个函数。还有是不是跟链接里限定了大小有关系。这样的话,需要修改什么才能全屏呢?
相关阅读:
themeroller使用问题?
[新手]关于socket.io接收tcp服务器数据后转发给客户端的问题【一句话就能解决?】
说实话,两年经验的前端独立完成一个商城项目,很容易吗?
JavaScript中函数作为另一个函数的参数的时候它存在于哪个作用域
这种情况怎么解决
angular2写的前端网站,需要集成进微信,前后端分离开发怎么做?
antd is not defined
move_uploaded_file()
移动端引入的字体文件过大该如何处理?
nodejs post的问题
allocator对象设为静态成员就会报错
webpack resolve.alias 配置问题
代码的最后两句,为什么参数加上了“[ ]”就能出来结果了呢
afnetworking从接口中得到数据,怎么把数据放在另外的变量里呢
在生产环境中输出错误信息是否安全?
请教一条sql
Cordova 应用如何通过 JavaScript 调用高德地图原生 API 辅助定位?
scrapy抓取网页返回的是404页面应该怎么做?
H5的copy事件?
安卓手机设备宽度(独立像素)