我一直在尝试实施新的Lollipop活动,并在Alex Lockwood令人敬畏的blog posts步骤后的几天内共享元素转换。 但现在我面临一些问题。
我的应用程序使用DrawerLayout进行导航,但我也可以在单击其他视图和按钮时启动一些活动。我已为所有活动正确设置了所有Enter,Reenter,Return和Exit过渡以及调用:
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(activity, getSharedViewsPairs(activity)).toBundle());
表示这些活动之间的共享元素。
如果我是第一次启动活动,那么过渡效果会很好。我的问题出现在我尝试启动/恢复之前已经调用过的活动但是现在暂停并活在活动堆栈上的活动。当我尝试将此活动置于前台时,则没有过渡。
我还必须说我将所有活动设置为Intent标志 FLAG_ACTIVITY_REORDER_TO_FRONT ,这样如果它们之前已经启动过,我不会重新启动它们。这跟它有什么关系吗?我是否遗漏了一些在恢复之前使用过渡启动的活动时需要调用的方法?
准备活动过渡的代码:
public static void requestTransitionsAnimations(Activity activity) {
if(MaterialAnimations.isAnimationSupported()){
Transition transition = TransitionInflater.from(activity).inflateTransition(R.transition.material_transitions);
activity.getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
activity.getWindow().setAllowEnterTransitionOverlap(true);
activity.getWindow().setAllowReturnTransitionOverlap(true);
activity.getWindow().setEnterTransition(new Explode());
activity.getWindow().setReenterTransition(new Explode());
activity.getWindow().setReturnTransition(new Explode());
activity.getWindow().setExitTransition(new Explode());
activity.getWindow().setSharedElementsUseOverlay(true);
activity.getWindow().setSharedElementEnterTransition(transition);
activity.getWindow().setSharedElementReenterTransition(transition);
activity.getWindow().setSharedElementExitTransition(transition);
activity.getWindow().setSharedElementReturnTransition(transition);
}
}
as