重新打开堆栈中的现有活动重新排序到前面时的共享元素转换

时间:2015-10-16 10:45:41

标签: android android-activity android-transitions shared-element-transition

我有一个活动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但没有任何反应。

是否有办法手动触发共享元素转换以解决此问题。

1 个答案:

答案 0 :(得分:-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); } 希望这有帮助!