我正在使用 sdk 11 (Honeycomb) 开发一个应用程序。在这个应用程序中,我利用硬件加速(在应用程序级别)使动画更流畅,没有它,它们的迟缓程度令人无法接受。由于我的客户真的很想拥有它们,我必须找到另一种解决方案,而不是关闭加速。
问题本身是我有一个Activity
包含很少WebView
元素的东西。3,确切地说 - 1 始终显示,另外 2 个用于预加载页面,因此它们是不可见的(我的意思是位于屏幕外,但仍然“可见”)。我使用翻译动画在它们之间“切换”。启用硬件加速后,它们会错误地呈现网页 - 我在页面上出现大而闪烁的黑框。这当然是不可接受的,所以我通过关闭所有 WebView 的硬件加速来绕过这个问题:
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
我也尝试在 xml 文件 ( android:layerType="software"
) 中设置它,但它的工作方式完全相同(应该如此)。无论如何,这两种方法都工作得很好——动画和 WebView 足够流畅,并且没有伪影。然而,一旦方向改变,问题就出现了。尽管我在代码中没有对纵向和横向模式进行重要区分,但它的工作原理如下:
- 活动以纵向模式开始,将方向更改为横向,返回纵向,等等。一切都按预期工作。
- 活动以横向模式开始。它工作正常。方向更改为纵向。文物再次开始出现。大多数情况下,当我滚动/缩放页面时,整个屏幕都会变黑,网页在蓝月亮中显示一次。这与 WebView 使用硬件加速完全相同。回到风景 - 它再次正常工作。
这使我认为硬件加速可能是问题所在。通过尝试在视图层次结构的不同级别设置软件加速来查看这种奇怪的行为是否停止,我被证明是正确的。我发现它确实停止了,并且没有错误,但只有整个 Activity 被软件加速,这对我来说是不可接受的(我的翻译动画![+在 webviews 中缓慢滚动])。如果仅将布局 xml 文件中的视图/视图组设置为软件加速,它仍然存在错误。有什么关于方向变化可以触发这种行为的吗?欢迎任何解决方案、技巧、提示、建议、想法、想法,无论多么不完整 - 我不喜欢这些。
如果您需要更多信息或一些代码,我很乐意提供给您。
感谢您的时间!