android 4.0中关于webview加载flash并使flash全屏的问题(附demo)

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的显示状态,所以会导致全屏时界面无或者卡住的问题。

知道原因后要解决这个问题就好办了。下面是解决方案:

[java]  view plain copy print ?
  1. mWebView.setWebChromeClient(new WebChromeClient(){  
[java]  view plain copy print ?
  1. public void onShowCustomView(View view, int requestedOrientation,  
  2.             WebChromeClient.CustomViewCallback callback) {  
  3.         if (mCustomView != null) {  
  4.             callback.onCustomViewHidden();  
  5.             return;  
  6.         }  
  7.         if (PhoneInfo.getPhoneAndroidSDK() >= 14) {  
  8.             mFullscreenContainer.addView(view);  
  9.             mCustomView = view;  
  10.             mCustomViewCallback = callback;  
  11.             mOriginalOrientation = getRequestedOrientation();  
  12.             mContentView.setVisibility(View.INVISIBLE);  
  13.             mFullscreenContainer.setVisibility(View.VISIBLE);  
  14.             mFullscreenContainer.bringToFront();  
  15.   
  16.             setRequestedOrientation(requestedOrientation);  
  17.         }  
  18.   
  19.     }  
  20.   
  21.     public void onHideCustomView() {  
  22.         mContentView.setVisibility(View.VISIBLE);  
  23.         if (mCustomView == null) {  
  24.             return;  
  25.         }  
  26.         mCustomView.setVisibility(View.GONE);  
  27.         mFullscreenContainer.removeView(mCustomView);  
  28.         mCustomView = null;  
  29.         mFullscreenContainer.setVisibility(View.GONE);  
  30.         try {  
  31.             mCustomViewCallback.onCustomViewHidden();  
  32.         } catch (Exception e) {  
  33.         }  
  34.         // Show the content view.  
  35.   
  36.         setRequestedOrientation(mOriginalOrientation);  
  37.     }  
[java]  view plain copy print ?
  1. });  

 

附DEMO地址:FlashDemo.rar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值