android 4.0中关于webview加载flash并使flash全屏的问题(附demo)
android2.1及之前的版本是不支持flash的。android2.2开始之后开始支持flash。要使用webview加载flash首先手机应该安装flash插件;其次应该设置webSettings = mWebView.getSettings();webSettings.setJavaScriptEnabled(true);webSettings.setPlugi
android2.1及之前的版本是不支持flash的。
android2.2开始之后开始支持flash。要使用webview加载flash首先手机应该安装flash插件;
其次应该设置
webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setPluginsEnabled(true);
android4.0要加载flash的话还需要开启硬件加速。
。。。
问题出来了,4.0加载flash确实可以正常播放,但是当你点击flash中的全屏按钮时,要么画面卡住要么有声音没画面。这确实是一个很蛋疼的问题。为什么会出现这个问题呢?经过一番研究发现时4.0中修改了相关代码导致全屏时出现问题。
讲到这里还要稍稍了解一下flash相关的知识。由于对flash研究也不是很深,讲个大概意思就好。flash正常大小在webview中显示是没有问题的。但是点击全屏按钮后flash会有一个全屏的界面,而这个全屏界面与正常大小的界面并不是显示在同一个view中。相当于有两个view,分别装载一般大小和全屏的界面。
4.0中修改了装载全屏界面这个view的显示状态,所以会导致全屏时界面无或者卡住的问题。
知道原因后要解决这个问题就好办了。下面是解决方案:
mWebView.setWebChromeClient(new WebChromeClient(){
public void onShowCustomView(View view, int requestedOrientation,
WebChromeClient.CustomViewCallback callback) {
if (mCustomView != null) {
callback.onCustomViewHidden();
return;
}
if (PhoneInfo.getPhoneAndroidSDK() >= 14) {
mFullscreenContainer.addView(view);
mCustomView = view;
mCustomViewCallback = callback;
mOriginalOrientation = getRequestedOrientation();
mContentView.setVisibility(View.INVISIBLE);
mFullscreenContainer.setVisibility(View.VISIBLE);
mFullscreenContainer.bringToFront();
setRequestedOrientation(requestedOrientation);
}
}
public void onHideCustomView() {
mContentView.setVisibility(View.VISIBLE);
if (mCustomView == null) {
return;
}
mCustomView.setVisibility(View.GONE);
mFullscreenContainer.removeView(mCustomView);
mCustomView = null;
mFullscreenContainer.setVisibility(View.GONE);
try {
mCustomViewCallback.onCustomViewHidden();
} catch (Exception e) {
}
// Show the content view.
setRequestedOrientation(mOriginalOrientation);
}
});
附DEMO地址:FlashDemo.rar
更多推荐
所有评论(0)