4

我剛剛開始使用appcompat支持庫重建我的Android 5.0應用程序。我剛剛完成了實現共享元素的轉換。它似乎工作得很好,直到我添加一個webview棒棒糖上共享元素轉換的Webview故障

我製作了一個視頻來演示故障。 https://www.youtube.com/watch?v=MuuGZc0Vwow

正如您所看到的,當我打開活動時一切正常。當我關閉它時,發生故障。正如你所看到的,除了webview以外,所有元素都應該像他們應該淡出。這只是掛在那裏,直到動畫結束,有點破壞動畫的整個平滑。

我該如何解決這個問題?如果它可能與我設置的方式有關,我很樂意分享一些代碼。

在此先感謝。

+0

這只是一個猜測,但嘗試在第二個activity的onCreate()方法中調用'webview.setTransitionGroup(true)'。 – 2014-12-05 18:03:48

+0

這會導致崩潰:('12-05 23:47:42.372:E/AndroidRuntime(9599):java.lang.IllegalStateException:無法爲WebView創建圖層 – 2014-12-05 22:48:37

+0

您可以發佈完整的堆棧跟蹤嗎? – 2014-12-05 22:53:43

回答

5

發生此故障的原因是因爲WebView extends AbsoluteLayout。默認ViewGroup s不是「過渡組」,並且沒有背景可繪製而不是由活動的窗口內容轉換動畫。爲了修復WebView的故障,您需要撥打webView.setTransitionGroup(true)(或使用android:transitionGroup="true"設置XML中的屬性)。這會導致WebView作爲活動轉換的一部分而逐漸消失,而不是簡單地坐在那裏直到在轉換結束時突然刪除。

至於「Unable to create layer for WebView」您收到的錯誤,我想這是因爲轉換框架在轉換過程中自動爲WebView創建了一個硬件層,並且由於某種原因,框架崩潰時試圖創建該圖層。這聽起來像是一個與Android內部圖形管道相關的完全獨立的問題,儘管......我不確定我可以給你一個很好的答案,說明爲什麼在沒有更多信息的情況下發生崩潰。

此問題也在the bottom of this blog post中討論。

+0

好的,謝謝你花時間解釋一些事情。 XML屬性和java語句都會導致相同的崩潰。但正如我所說,這是不一致的,我不明白。有一次,我已經看到它的工作,但9/10次是隨機崩潰。一個視頻進一步說明:https://www.youtube.com/watch?v=HLfgwaeJXDc – 2014-12-05 23:26:55

+3

通過將'android:transitionGroup'從'WebView'移動到它的父元素,崩潰和毛刺現在都消失了。我仍然不能100%確定發生了什麼,但感謝您花時間解釋並指出我正確的方向! – 2014-12-05 23:40:21

+0

啊,很酷。很高興你能發現那個修復。 :) – 2014-12-05 23:53:41

0

我在棉花糖版本的webview中面對這種隨機崩潰問題。我已添加屬性android:transitionGroup="true"。但崩潰正在發生,在此之後,我已在聲明該活動的清單中添加了android:hardwareAccelerated="false"。之後,隨機崩潰也在棉花糖版本和更低版本中解決了。