重新打开堆栈中的现有活动时的共享元素过渡

pt1*_*123 5 android android-activity android-transitions shared-element-transition

我从那里打开一个活动A,然后打开活动B,并将共享元素传递给它。它可以动画化过渡效果,但是当我返回到活动A,然后再次进入活动B时(仍使用

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Run Code Online (Sandbox Code Playgroud)

共享元素转换未运行。

对于常规动画,您可以在onNewIntent中调用overridePendingTransition()来运行动画。/sf/answers/582896401/

我尝试在那里调用startPostponedEnterTransition(),但是什么也没发生。

这是我的代码,允许过渡

void allowWindowTransitions(){
Window w = getWindow();
w.requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);  
Run Code Online (Sandbox Code Playgroud)

启动活动的代码

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

startActivity(intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

我试过弄乱setSharedElementReturnTransition和setSharedElementReenterTransition,但是什么也没发生。

有没有一种方法可以手动触发共享元素转换来解决此问题。

Amo*_*sai -2

不确定共享元素转换,但您可以重写 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); } 希望这可以帮助!