我正在开发一个Android 3.0平板电脑的应用程序,它应该在WebView中播放swf文件。 首先,我尝试从设备打开swf文件,而不是通过互联网,没有运气。 WebView显示,但在WebView中我只能看到一个黑屏(右侧有3-4 px宽的白线)。 如果我将相同的URL加载到设备浏览器,则Flash文件可以正常播放。 我想我在WebView设置上遗漏了一些东西,但经过几个小时的搜索和谷歌搜索后,我仍然不知道是什么。
Java代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.presentation);
presentationWebView = (WebView) findViewById(R.id.presentation_webview);
presentationWebView.getSettings().setJavaScriptEnabled(true);
presentationWebView.getSettings().setPluginsEnabled(true);
presentationWebView.getSettings().setAllowFileAccess(true);
presentationWebView.loadUrl("http://my_domain/fileName.swf");
}
presentation.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:id = "@+id/presentation_webview"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"/>
</LinearLayout>
非常感谢你的任何答案。 Ripityom
答案 0 :(得分:5)
我终于明白了! 只需要添加属性
android:hardwareAccelerated = "true"
到我的清单文件。
答案 1 :(得分:2)
我只是将您的代码复制并粘贴到一个新项目中,更改了swf文件位置,并且它完美运行。 (屏幕为空,直到.swf文件完成下载,在某些情况下可能需要一段时间)。
您的应用是否拥有INTERNET权限?这个URL绝对正确吗?尝试使用几个不同的SWF文件,看看是否有区别。
答案 2 :(得分:0)
Thx Pipityom。属性“android:hardwareAccelerated”拯救了我的生命。也适合我。
在这里,我发布了android开发者文档“从Android 3.0开始,应用程序可以使用硬件加速的OpenGL渲染器”的解释,以提高许多常见2D图形操作的性能。当启用硬件加速渲染器时,大多数操作在Canvas,Paint,Xfermode,ColorFilter,Shader和Camera中加速。这样可以使动画更流畅,滚动更平滑,整体响应更快,即使对于没有明确使用框架的OpenGL库的应用程序也是如此。
请注意,并非所有OpenGL 2D操作都会加速。如果启用硬件加速渲染器,请测试应用程序以确保它可以正确使用渲染器。“