-
Notifications
You must be signed in to change notification settings - Fork 2.1k
[转]Android如何关闭硬件加速 #7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
后面的部分硬是没看懂。。。 |
这个确实没有遇到过。 |
抢的一批 |
一如既往的稳健 |
老哥稳,细节问题都考虑到了 |
我感觉还是最好不要关闭硬件加速器,关闭之后,toolbar不显示阴影,cardview不显示圆角边框,circleimageview 不显示边框阴影。有很多后遗症。 |
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 之后,myview.isHardwareAccelerated())依然返回true,关闭无效啊 |
layerType这种方式比较特殊,如果设置成Software,会将整个View绘制到一个Bitmap中,然后将这个Bitmap绘制到Canvas(这一步依然是通过硬件加速的方式) |
原文地址:http://developer.android.com/guide/topics/graphics/hardware-accel.html
译文地址:http://blog.chenming.info/blog/2012/09/18/android-hardware-accel/
硬件加速
Android 3.0 (API level 11), 开始支持
所有的View 的canvas都会使用GPU,但是硬件的加速会占有一定的RAM。
在API >= 14上,默认是开启的,如果你的应用只是标准的View和Drawable,全局都打开硬件加速,是不会有任何问题的。
然而,硬件加速并不支持所有的2D画图的操作,这时开着它,可能会影响到你的自定义控件或者绘画,出现异常等行为,
所以android对于硬件加速提供了可选性
如果你的应用执行了自定义的绘画,可以通过在真机上测试开启硬件加速查找问题
硬件加速的级别
Application
Activity
Window
View
Note: 你可以关闭View级别的硬件加速,但是你不能在View级别开启硬件加速,因为它还依赖其他的设置
两种获取是否支持硬件加速的方式
如果必须进行这样的验证,建议你在draw的代码块中使用:Canvas.isHardwareAccelerated(),因为如果一个View被attach到一个硬件加速的Window上,
即使没有硬件加速的Canvas,它也是可以被绘制的。比如:将一个View以bitmap的形式进行缓存
The text was updated successfully, but these errors were encountered: