活动与视图的转换方式有何不同?

时间:2015-01-14 18:19:04

标签: android android-animation android-ui android-transitions

我最近切换到单个活动(感谢迫击炮和流程),然后我切换全屏视图,而不是使用以下代码启动新活动。

    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个活动过渡相同的视图?我希望完全转向不需要多于一项活动的方法,但又不愿意失去活动过渡的顺畅性

2 个答案:

答案 0 :(得分:0)

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

请阅读有关片段的文档,特别是共享元素的片段转换。它非常易于处理并保持代码清洁。

答案 1 :(得分:0)

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