【发布时间】:2016-12-04 14:30:45
【问题描述】:
我在使用 Android Transition API 时遇到了一个非常奇怪的问题。我有一个sharedElement 和ImageView,我让操作系统处理这两个元素之间的Transition。但是我遇到了这个奇怪的问题,如下面的 gif 所示
我是animating 的唯一element 是AvatarView,如您所见,但是onBackPressed 使用此日志使应用程序崩溃
java.lang.IllegalStateException: Unable to create layer for CardView
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:5845)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
启动Activity的代码
第一个Layout
<com.fastaccess.ui.widgets.AvatarLayout
android:id="@+id/avatarLayout"
android:layout_width="48dp"
android:layout_height="48dp"
android:transitionName="@string/image_transition"/>
第二个Layout
<com.fastaccess.ui.widgets.AvatarLayout
android:id="@+id/avatarLayout"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="top"
android:transitionName="@string/image_transition"/>
这就是我如何启动Transition
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity,
sharedElement, ViewHelper.getTransitionName(sharedElement));
activity.startActivity(intent, options.toBundle());
在此之后没有更多花哨的代码,除了我打电话给supportFinishAfterTransition
这是另一个 gif,但没有 SharedElement Transition & 它确实可以正常工作。
老实说,崩溃日志并不能说明太多,但我可以确认它是因为 Comment TextView 是 Large 即使它与SharedElement 但根据我的测试,这似乎是崩溃的原因。
如果有人以前遇到过这种情况并在我放弃时找到解决方法,那就太好了。
任何建议将不胜感激。
【问题讨论】:
标签: android android-animation android-transitions