Android 三星牛轧糖7.0共享元素转换问题

Android 三星牛轧糖7.0共享元素转换问题,android,shared-element-transition,Android,Shared Element Transition,我使用共享元素转换从一个活动转到另一个活动。我有一个带有几个子元素的父布局,我正在尝试使用共享元素转换将它们设置为细节视图的动画。我推高了一份回购协议样本 这种转换在Android emulator、my Pixel和三星手机上运行良好,这些手机尚未升级到Nougat 7.0。在运行7.0的三星设备上,容器内的图像和文本无法正确设置动画。在我的示例应用程序中,顶部的容器是三星设备上存在问题的容器,底部的容器是它应该始终保持的外观 查看代码,您可能会问,为什么不使用第二种解决方案,即只设置容器的动

我使用共享元素转换从一个活动转到另一个活动。我有一个带有几个子元素的父布局,我正在尝试使用共享元素转换将它们设置为细节视图的动画。我推高了一份回购协议样本

这种转换在Android emulator、my Pixel和三星手机上运行良好,这些手机尚未升级到Nougat 7.0。在运行7.0的三星设备上,容器内的图像和文本无法正确设置动画。在我的示例应用程序中,顶部的容器是三星设备上存在问题的容器,底部的容器是它应该始终保持的外观


查看代码,您可能会问,为什么不使用第二种解决方案,即只设置容器的动画,然后使用它设置内部动画。我已经看到,在一些布局中,Android不能正确地设置内部动画,有时甚至根本不能。所以我求助于指定每个视图,它们将成为共享元素转换。还有其他人遇到过这个问题吗?

我在三星设备上遇到过同样的问题,尽管我没有测试牛轧糖和以前的操作系统

如果可能的话,尝试仅转换文本视图上没有
transitionName
属性的视图组

<LinearLayout
    ...
    android:transitionName="ViewGroupTransition">

    <!-- No transitions on the TextViews -->
    <TextView
        android:id="@+id/my_text_view1"
        ...
        />

    <TextView
        android:id="@+id/my_text_view2"
        ...
        />

</LinearLayout>


将transitionNames添加到此处的TextView会导致转换无法正常工作,如您所述。如果在转换的目标视图中存在类似的文本视图,则不应要求转换名称来完成文本视图之间的转换。

好吧,经过数小时的研究,我终于明白了发生了什么。我在commit中向共享元素回调添加了一堆日志语句。该提交还解决了该问题。事实证明,在目标活动的onSharedElementStart中,子视图的坐标分别对应于其父视图,而不是根视图。在Android模拟器、my Pixel或Nougat之前的三星设备上,它具有相对于根的正确坐标。在三星牛轧糖(Samsung Nougat)设备上,其坐标仍然是相对于其父设备的。