使用FLAG_ACTIVITY_CLEAR_TOP启动Intent时未触发的活动之间的共享元素转换

时间:2016-01-19 09:56:27

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

我正在尝试在Transition之间执行一个涉及共享元素Activities

当我在没有任何特殊标志的情况下启动Intent时,转换将按预期显示。

我的问题是当我使用Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP标志启动转换时。 正如预期的那样,在这种情况下,目标Activity不会创建,因为它已经存在于堆栈中,而是在其顶部的Activities被销毁,Intent被路由到现有的实例。 碰巧的是,似乎未创建Activity会避免触发过渡

有没有人来过这个并且有任何已知的解决方法吗?

代码是:

final Intent intent = new Intent(this, TargetActivity.class)
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
final Pair<View, String> sharedElement = new Pair<View, String>(findViewById(R.id.shared_elem_id), "TAG");
final ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, sharedElement);
ActivityCompat.startActivity(this, intent, options.toBundle());

当我注释掉放置过渡的标志的行时。

1 个答案:

答案 0 :(得分:-1)

尝试通过样式而不是在运行时定义动画。由于活动既不破坏也不创造第二次,它不会显示过渡。