android4.0 开启硬件加速后应用运行出错
2012-12-20 17:02
197 查看
android4.0 开启硬件加速后应用运行出错
分类:移动开发 android
2012-12-20 17:02
400人阅读 评论(0)
收藏
举报
androidAndroidANDROIDapiAPIAPi硬件加速移动开发
目录(?)[+]
Android4.0 开启硬件加速后部分应用运行出错。
出现异常:
12-20 15:18:19.543: E/AndroidRuntime(26301): FATAL EXCEPTION: main
12-20 15:18:19.543: E/AndroidRuntime(26301): java.lang.UnsupportedOperationException
12-20 15:18:19.543: E/AndroidRuntime(26301): at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:429)
12-20 15:18:19.543: E/AndroidRuntime(26301): at cn.hpc.ui.MyView.drawArea(MyView.java:66)
关闭硬件加速则运行正常。
原因在这里
http://developer.android.com/guide/topics/graphics/hardware-accel.html
Hardware Acceleration
Beginning in Android 3.0 (API level 11), the Android 2D rendering pipeline is designed to better support hardware acceleration. 从Android
3.0(API Level 11)开始,Android的2D渲染管线可以更好的支持硬件加速。硬件加速使用GPU进行View上的绘制操作。
... ...
Unsupported Drawing Operations
不支持的绘图方法:Canvas
clipPath()
clipRegion()
drawPicture()
drawTextOnPath()
drawVertices()
Paint
setLinearText()
setMaskFilter()
setRasterizer()
Xfermodes
AvoidXfermode
PixelXorXfermode
我的应用中,正好用到第一种 clipPath.所以运行出错。
问题找到,
解决方法:
有4种控件硬件加速的方法。
1 Application level
In
your Android manifest file, add the following attribute to the
<application>tag
to enable hardware acceleration for your entire application:
在应用程序AndroidManifest.xml文件中,为application标签添加如下的属性即可为整个应用程序true开启、false关闭硬件加速
<application android:hardwareAccelerated="false" ...>
2 Activity level
在应用程序AndroidManifest.xml文件中,只需在activity元素中添加android:hardwareAccelerated属性即可。例:在application级别开启硬件加速,但在activity上关闭硬件加速。
<application android:hardwareAccelerated="true"> <activity ... /> <activity android:hardwareAccelerated="false" /> </application>
3 Window level
If you need even more fine-grained control, you can enable hardware acceleration for a given window with the following code:getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
Note: You currently cannot disable hardware acceleration at the window level.
4 View level
You can disable hardware acceleration for an individual view at runtime with the following code:myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
测试中第1, 2 中都无效,第3种只能开启硬件加速,而不能关闭硬件加速。
只有第4种适合。只对当前View关闭硬件加速。
优点:View中使用到上述硬件加速不支持的方法时,强制关闭硬件加速。其它地方,由系统决定是否硬件加速。
相关文章推荐
- android4.0 开启硬件加速后应用运行出错
- 用CSS开启硬件加速来提高网站性能(转)
- 加速Python运行的工具应用
- 实习杂记(28):Android不同层次开启硬件加速的方式
- CSS进阶篇--用CSS开启硬件加速来提高网站性能
- PHP 应用提速 - 第 2 部分: 分析 PHP 应用程序以查找、诊断和加速运行缓慢的代码
- PHP应用系列之二:查找、诊断和加速运行缓慢的代码
- CSS开启硬件加速 hardware accelerated
- 用CSS开启硬件加速来提高网站性能
- php如何采用memcache技术 加速web应用运行效率
- [转]为 PHP 应用提速、提速、再提速!,第 2 部分: 分析 PHP 应用程序以查找、诊断和加速运行缓慢的代码
- LNMP开启Memcached缓存加速WordPress网站运行
- 给Windows Server2008开启硬件加速
- android模拟器开启硬件加速
- Win7系统如何开启显卡硬件加速功能
- 开启硬件加速的方式
- [转]为 PHP 应用提速、提速、再提速!,第 2 部分: 分析 PHP 应用程序以查找、诊断和加速运行缓慢的代码
- 给Windows Server2008开启硬件加速
- Android应用开发:图形绘制之硬件加速
- Android应用开发:图形绘制之硬件加速