方向改变了硬件加速设置

时间:2012-01-30 15:21:00

标签: android webview screen-orientation hardware-acceleration

我正在使用sdk 11(Honeycomb)开发应用程序。在这个应用程序中,我利用硬件加速(在应用程序级别)使动画更流畅,没有它,它们是令人无法接受的缓慢。由于我的客户真的想拥有它们,我必须找到另一个解决方案,而不是关闭加速。

问题本身就是我有Activity,其中包含很少WebView个元素。 3,确切地说 - 总是显示1,另外2个用于预加载页面,因此它们是不可见的(我的意思是定位在屏幕外,但仍然“可见”)。我使用翻译动画在它们之间“切换”。随着硬件加速,它们会错误地呈现网页 - 我在页面上变大,闪烁的黑框。这当然是不可接受的,所以我通过关闭所有WebView的硬件加速来绕过这个问题:

webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

我也尝试在xml文件(android:layerType="software")中设置它,但它的工作方式完全相同(应该是这样)。无论如何,这两种方法都运行得很好 - 动画和WebView足够流畅,没有任何工件。然而,一旦方向改变,问题就出现了。即使我在代码中没有对纵向和横向模式进行重要区分,它的工作原理如下:

  • 活动以纵向模式开始,将方向更改为横向,返回纵向等。一切都按预期工作。
  • 活动以横向模式启动。它工作正常。方向更改为纵向。工件再次开始显示。大多数情况下,当我滚动/缩放页面时,整个屏幕变黑,网页在蓝色的月亮中显示一次。这与WebViews使用硬件加速完全相同。回到风景 - 它再次正常工作。

这让我觉得硬件加速可能是问题所在。我通过尝试在不同级别的视图层次结构中设置软件加速来证明自己是正确的,以查看这种奇怪的行为是否会停止。我发现它确实停止了,并且它没有错误,但只有整个Activity都是软件加速,这对我来说是不可接受的(我的翻译动画![+在网页浏览中慢滚动])。如果只将布局xml文件中的视图/视图组设置为软件加速,则仍然存在错误。是否存在可以触发此类行为的方向更改?任何解决方案,黑客,提示,建议,想法,想法,无论多么不完整,都是受欢迎的 - 我已经不在了。

如果您需要更多信息或某些代码,我很乐意为您提供。
谢谢你的时间!

0 个答案:

没有答案