3

最近我的应用程序收到了很多意见,“它不工作”与CM9 Android冰淇淋三明治。我无法在运行Android 4.0的模拟器上重现错误,并且由于Android市场的运作方式,我无法联系这些人询问有关细节。Android 4.0兼容性问题与Canvas.clipPath

幸运的是,一个崩溃错误报告引起了我的注意。我正在使用Canvas.clipPath绘制圆角......并且看起来有些手机在尝试使用该功能时会掷出UnsupportedOperationException。快速浏览谷歌显示,在Android 4.0中使用硬件加速似乎是一个问题 - 所以这是收到评论的潜在原因。

问题是 - 发生了什么事?在以前的android版本中加速的应用程序硬件不?为什么不支持这样的通用功能?什么是解决方法?

Canvas.clipPath的示例用法可以在我的其他文章中找到。这里检查接受的答案:Android rounded corners in ListView

在此先感谢

+0

我在我的应用程序中找到了同样的东西。您可以在Manifest.xml中将android:hardwareAccelerated =“false”设置为解决方法。这工作在蜂窝和推测是有效的ICS – CjS 2012-02-16 08:22:49

回答

6

在ICS,硬件加速功能是默认开启。在4.0之前,默认情况是硬件加速关闭。 硬件加速不支持clipPath(和其他一些操作,请参阅这里更多http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html) 我面临同样的问题。作为快速修复,我将关闭整个应用程序的加速,稍后我将重写代码以避免使用clipPath

+0

你找到了ClipPath吗? – 2012-05-03 12:36:00

+0

@Olyly Dixon号我想要硬件加速,所以我最终以不使用clipPath的不同方式重写我的代码。 – yoah 2012-05-04 14:21:11

+0

+1,哇,Android永远不会让我惊叹......没有任何警告,例外,什么都没有,但是当你采用更新的SDK时,只有一半的绘图代码变成了NOP。 – mvds 2012-10-18 12:52:37

2

只能在导致问题的特定视图上关闭硬件加速。看看我的答案在这里:https://stackoverflow.com/a/14054331/596708

+0

理论上,是的 - 但它的bug。一些Android设备仍然会尝试使用硬件加速。 – 2012-12-27 14:35:50

+0

真的吗?我可以在哪里可以看到更多的信息,哪些设备发生或有人遇到那么? – ffleandro 2012-12-27 15:26:38

+0

这是可能的,android 4.0。*忽略java设置图层到软件的方式,开发人员选项可以覆盖清单 – 2013-04-23 21:39:52