我尝试使用android:windowEnterTransition和android:windowExitTransition,但这似乎为活动中的每个视图设置动画。如何使用内容为整个活动制作动画?两个活动之间没有共享元素。
答案 0 :(得分:1)
揭示动画不适用于Windows。您可以通过定位窗口内容来模拟它。我这样做了,它运作良好:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
ViewGroup viewGroup = (ViewGroup) (findViewById(android.R.id.content).getParent());
viewGroup.setTransitionGroup(true);
RevealTransition transition = new RevealTransition();
transition.addTarget(viewGroup);
getWindow().setEnterTransition(transition);
}
您必须使用ActivityOptions.makeSceneTransitionAnimation启动活动。
一个警告 - 我实际上不确定在android.R.id.content上使用getParent()是否合法。我这样做了,所以我的行动栏也将成为目标。你应该自己检查一下。我只是做了一个快速测试,看看揭示是否有效。
我知道这是一个性能问题,但您可能希望将窗口背景分配给您的内容,以便循环显示有一条硬线。窗口背景颜色淡入。您可以调整渐变持续时间,使其不会像显示一样快地淡入,但我在测试中没有看到视觉问题 - 可能是因为颜色我用了。
答案 1 :(得分:0)
圆形显示是一个视图动画。跳过活动动画,然后在新活动根视图组上执行视图动画。
查看Lollipop + AOSP代码中的InCallUi
源代码以获取示例。