7

我从那里有一个活动 A,我打开活动 B,并将共享元素传递给它。它可以很好地为过渡设置动画,但是当我返回 Activity A 然后再次转到 Activity 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 但什么也没发生。

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

4

1 回答 1

-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); } 希望这可以帮助!

于 2016-08-09T12:08:40.720 回答