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个活动过渡相同?我很想完全转向不需要一个以上的活动,但不愿意失去活动转换的平滑性的方法

回答

0

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

请阅读有关片段的文档,尤其是共享元素的片段转换。这是非常容易处理和保持你的代码清洁。

+0

我试图摆脱碎片的原因如下所述:http://corner.squareup.com/2014/10/advocating-against-android-fragments.html。我更关心的是android如何转换活动,以及如果在传入的过渡动画之外还有其他事情发生, – FriendlyMikhail

+0

你对外界意味着什么? – Mann

+0

我将视图创建动画设置为与以下活动开始动画相同 但是,当我查看过渡时,即使我没有做任何事情来创建过渡效果,活动似乎也会淡化旧活动。 – FriendlyMikhail

0

在代码示例中使用了两个不同的表达式。有一次是nudge_out,另一次是slide_out。 我不知道它是否意外。 也许全球都在淡出这些活动?!

+0

你有检查吗? – Mann

相关问题