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
不支持的绘图方法:
我的应用中,正好用到第一种 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测试代码;android4.0测试代码;android4.0测试代码;android4.0测试代码
Android4.0源码编译方法介绍,记录基于Ubuntu10.04编译Android4.0源码的过程。
详细剖析了NDK开发中涉及的各类问题和解决方案:搭建Android NDK开发环境的每一步细节,开发第一个Android NDK程序,Android NDK中Java与C/C++代码的互相调用,Facade设计模式在NDK中的美妙应用,NDK与软/硬件整合,...
android 4.0 sources 源码。主要用于编写程序时查看代码,即ctrl+鼠标单击
《细说Android 4.0 NDK编程》
android4.0 电子支付源码 NFC
android4.0 日历源码Calendar
mtk6577 android4.0 root工具
Android 4.0 组件库 for Axure 模板 一个中文模板,一个详细组件,组合使用,相得益彰
android4.0的原生照相机源代码,原生camera代码。
android4.0_Browser
Android 系统4.0 命名为 Ice Cream Sandwich(简称ICS,冰淇淋三明治),是谷歌发布新一代操作系统。Android4.0 拥有十大重点新特性。集成谷歌电视和Chrome OS的智能停放 ,运行速度得到进一步提升。2011年10月19日...
压缩包内是原生的android4.0图库代码
android4.0-api14 无需解释
压缩包内是android4.0的电话模块源代码
《Android 4.0网络编程详解》对Android 4.0网络编程中的XML形式,JSON操作,需要掌握的HTTP知识,数据下载上传,Socket编程,浏览器开发,Android中软件界面设计新大陆——采用HTML设计软件界面,Android应用程序的...
之前上传的(http://download.csdn.net/detail/michael__li/3797623)有网友反应有部分API没有包含,这次是修复好了,包含所有的API,最完整的Android4.0 API 源代码。 下载的压缩包里有使用方法,下载后在Eclipse里...
Android 4.0 Camera源码,该代码为Andriod 4.0 系统相机源代码。
tools_r14-linux.zip android 4.0 sdk tools
本文将指导你如何在电脑上安装模拟器体验Android 4.0