0

我最近切换到一个活动(多亏了迫击炮和流程),然后我切换全屏视图,而不是使用以下代码开始新活动。

    setAnimation(direction, oldChild, newChild);

    // Out with the old, in with the new.
    if (oldChild != null) container.removeView(oldChild);
    container.addView(newChild);
}

protected void setAnimation(Flow.Direction direction, View oldChild, View newChild) {
    if (oldChild == null) return;

    int out = direction == Flow.Direction.FORWARD ? R.anim.slide_out_to_left : R.anim.slide_out_to_right;
    int in = direction == Flow.Direction.FORWARD ? R.anim.slide_in_from_right : R.anim.slide_in_from_left;

    oldChild.setAnimation(loadAnimation(context, out));
    newChild.setAnimation(loadAnimation(context, in));
}

这种过渡正是我过去在活动之间过渡的方式

    activity.startActivity();
    activity.overridePendingTransition(R.anim.slide_in_from_right, R.anim.nudge_out_to_left);

对我来说,视图和活动转换都应该呈现相同的内容,但我看到的是活动转换中发生了一些额外的事情。也有某种淡出。

任何人都知道如何让视图转换看起来与 2 个活动转换相同?我很想完全转向不需要多个活动的方法,但不想失去活动转换的平滑度

4

2 回答 2

0

您可以将代码分成两个活动而不是一个。如果您在活动中仅共享一些静态视图(文本、图像......),但在第二个活动中做更多的事情,这将非常有用。有时,如果您使用片段而不是一个视图或两个活动,这是一个很好的解决方案。

请阅读有关片段的文档,尤其是共享元素的片段转换。它很容易处理并保持代码干净。

于 2015-01-14T18:42:53.897 回答
0

您在代码示例中使用了两种不同的输出异常。一次nudge_out,另一次slide_out。不知道是不是偶然 也许活动有全局淡出?!

于 2015-01-14T19:09:41.523 回答