Android – 调用活动的共享元素转换完成()

我正在做一个应用程序更多的材料,我只是坚持如何实现一些共享的元素转换。 我有一个活动A,启动另一个B,然后调用finish()为了从后面的堆栈中删除它。 在我的情况下,我有一个要分享这两个活动的元素,但是一旦从A传递给B,A就不再重要了。 如果在startActivity(ctx,intent,bundle)后面没有调用finish(),那么退出/inputanimation完美地工作。 但是,如果我打完电话,在animation开始之前会有一个非常丑陋的闪烁。

有没有我忽略的东西,或者只是不可能做我想做的事情?

Solutions Collecting From Web of "Android – 调用活动的共享元素转换完成()"

你可以在onStop函数中完成你的活动,如果你只想在从A转换到B的时候发生这种情况,那么在你调用startActivity(ctx,intent,bundle)之后创build一个标志并设置它:

@Override public void onStop() { super.onStop(); if(mShouldFinish) finish(); } 

确保在完成活动B后调用finish()而不是finishAfterTranstion(),因为活动A不在那里

在完成活动A之后,如果您按回来,B中的共享元素可能会挂在屏幕上。 在ActivityB.onEnterAnimationComplete中将transitionName设置为null以避免这种情况。

UPDATE

更好,更简单的方法

 ActivityCompat. finishAfterTransition(this); 

<3支持库。

在5.0和更高版本中尝试finishAfterTransition()方法,您可以在退出转换发生后完成活动。

这可能是晚了,但我有同样的问题。 对我有效的是:

 supportFinishAfterTransition(); 

这包括在支持库中,像魅力一样工作。

PS:当你调用supportFinishAfterTransition()时,你supportFinishAfterTransition()调用supportFinishAfterTransition()