请看这个视频,展示了一个共享元素的活动转换。 它是从列表活动到详细活动的转换。
[视频链接不再有效]
正如您所看到的那样,ImageView 在选项卡的前面被绘制出来。
我期望的是选项卡在 ImageView 上方绘制,并在整个转换过程中逐渐消失(以便在动画结束时它们消失)。
唯一有效的方法似乎是将 windowSharedElementsUseOverlay
设为 true,
但这会带来其他难看的影响,所以这不是一个选择。
最常建议的方法是在转换本身中包含选项卡,但问题在于详细活动中没有选项卡,因此不能共享。
代码: 我像这样启动详细活动:
options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, pairs);
ActivityCompat.startActivity(activity, subActivity, options.toBundle());
RecyclerView
来解决了这个问题,这样视图就不会被ActionBar
/Toolbar
遮挡,然后一旦滚动事件完成,就执行过渡。虽然不是理想的解决方案,但它看起来很好,而且能够胜任工作。复杂之处在于确定向下滚动多少,这取决于视图被遮挡的程度。 - Tim Malseed