动画活动更改为圆形显示

时间:2015-07-08 16:32:00

标签: android android-5.0-lollipop android-transitions

我尝试使用android:windowEnterTransition和android:windowExitTransition,但这似乎为活动中的每个视图设置动画。如何使用内容为整个活动制作动画?两个活动之间没有共享元素。

2 个答案:

答案 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源代码以获取示例。