我最近切换到单个活动(感谢迫击炮和流程),然后我切换全屏视图,而不是使用以下代码启动新活动。
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个活动过渡相同的视图?我希望完全转向不需要多于一项活动的方法,但又不愿意失去活动过渡的顺畅性
答案 0 :(得分:0)
您可以将代码分成两个而不是一个。如果您在活动中仅共享一些静态视图(文本,图像,...),但在第二个活动中执行更多操作,则这非常有用。 如果您使用片段而不是一个视图或两个活动,有时它是一个很好的解决方案。
请阅读有关片段的文档,特别是共享元素的片段转换。它非常易于处理并保持代码清洁。
答案 1 :(得分:0)
您在代码示例中使用了两个不同的异常。一次是nudge_out,另一次是slide_out。 我不知道是不是偶然。 也许全球淡出这些活动?!