0

我从那里打开活动A打开活动B,并将共享元素传递给它。它动画过渡很好,但是当我回到活动A,然后转到活动B再次这仍然是在堆栈中使用重新打开堆栈中的现有活动时的共享元素转换重新排序到前面

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

共享元素的过渡不会运行。

使用常规动画,您可以在onNewIntent中调用overridePendingTransition()以运行动画。 https://stackoverflow.com/a/8327091

我试着在那里调用startPostponedEnterTransition(),但没有发生任何事。

这是我的代码,以允许过渡

void allowWindowTransitions(){ 
Window w = getWindow(); 
w.requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS); 

代码开始活动

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
    ActivityOptionsCompat options = ActivityOptionsCompat. 
      makeSceneTransitionAnimation(this, sharedElement, "profile"); 

startActivity(intent, options.toBundle()); 

我试图与setSharedElementReturnTransition & setSharedElementReenterTransition但没有乱搞发生。

有没有办法通过手动触发共享元素转换来解决这个问题。

回答

0

不确定共享元素转换,但您可以覆盖onNewIntent方法以在活动进入前台时应用动画。

@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Log.i(TAG, "onNewIntent: "); overridePendingTransition(R.anim.transition_enter_from_right, R.anim.transition_exit_to_left); } 希望这会有所帮助!