棒棒糖上共享元素转换中的 Web 视图故障



我刚刚开始使用appcompat支持库为Android 5.0重建我的应用程序。我刚刚完成了具有共享元素的过渡。它似乎工作得很好,直到我添加一个webview.

我制作了一个视频来演示故障。https://www.youtube.com/watch?v=MuuGZc0Vwow

如您所见,当我打开活动时,一切都很好。当我关闭它时,出现故障。如您所见,除了 Web 视图之外,所有元素都像它们应该的那样淡出。它只是挂在那里,直到动画结束,有点破坏动画的整体流畅度。

我该如何解决这个问题?如果它可能与我的设置方式有关,我很乐意分享一些代码。

提前谢谢。

发生此故障的原因是因为 WebView extends AbsoluteLayout .默认情况下,不是"过渡组"且没有背景可绘制对象的ViewGroup将不会由活动的窗口内容过渡进行动画处理。为了修复WebView的故障,您需要调用webView.setTransitionGroup(true)(或使用android:transitionGroup="true"在XML中设置属性(。这应该会导致WebView作为活动转换的一部分逐渐消失,而不是简单地坐在那里,直到在过渡结束时突然删除。

至于您收到的"无法为WebView创建层"错误,我想这是因为过渡框架在过渡期间自动为WebView创建硬件层,并且由于某种原因,框架在尝试创建层时崩溃。这听起来像是一个与Android内部图形管道相关的完全独立的问题......我不确定我能给你一个很好的答案,为什么在没有更多信息的情况下会发生崩溃。

本博文底部也讨论了此问题。

我在棉花糖版本的webview中遇到了这种随机崩溃问题。我添加了属性android:transitionGroup="true"。但是崩溃正在发生,之后我在声明该活动的清单中添加了android:hardwareAccelerated="false"。在那次随机崩溃之后,棉花糖版本和更低版本也解决了。

最新更新