Geo*_*ang 0 android android-layout android-transitions activity-transition
我知道可以通过活动转换来在活动A和活动B之间对共享元素进行转换,如下所示:
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
Pair.create(view1, "agreedName1"),
Pair.create(view2, "agreedName2"));
Run Code Online (Sandbox Code Playgroud)
同一活动中的片段也有片段转换。但是,是否有一种方法可以在活动A的“片段”视图和活动B之间转换共享元素?
我的活动A有一个带有片段的ViewPager,这些片段具有要转换为活动B的视图的视图。因此,我要转换为活动B的视图实际上是在活动A的“片段”布局中,而不是直接在活动A的布局中。
有什么办法可以使这项工作吗?
是的,片段本身不会导致活动转换出现问题。主要问题是片段倾向于在以后加载其内容,并且过渡系统对可用内容感到困惑。
进行过渡时,视图实际上不会从一个活动转移到另一个活动。拍摄了位置和大小(以及位图)的快照,并将信息传输到活动B。然后,活动B中的相应视图从该位置和大小过渡到最终位置和大小。通常不使用位图,但在需要使用该位图进行淡入淡出或类似效果时会使用该位图。
如果共享元素在活动A的片段中,则传出过渡很好-视图存在且位置正确。唯一的潜在问题是过渡的回归。当活动B关闭时,可能需要重新启动活动A(内存压力,方向更改等)。在这种情况下,必须重新创建片段并正确放置视图。在中onActivityReenter,调用postponeEnterTransition,然后在加载片段并完成布局后,调用startPostponedEnterTransition。然后,活动B将知道共享元素的最终位置和大小,因此可以开始其动画。
相反,当活动B在片段中具有共享元素时,情况也是如此。您将不得不推迟onCreate中的enter转换,直到片段被加载并且Activity B中的布局完成为止。
| 归档时间: |
|
| 查看次数: |
1630 次 |
| 最近记录: |