I'm working on making an application more Material and I'm just stuck on how to implement some shared element transitions. I have an activity A that starts another B and then calls finish() in order to remove it from the back stack. In my case I have an element I want to share between the two activities, but once it is passed from A to B, A no longer matters. If I don't call finish() after startActivity(ctx,intent, bundle) the exit/enter animation works perfectly. However, if I do call finish, there's a really ugly flicker before the animation starts.
Is there something I'm overlooking or is it just not possible to do what I am trying to do?
UPDATE
Much better and simpler way
<3 support library.
This is maybe late but I had the same issue. What worked for me is:
This is included in the support library and works like charm.
PS: you don't needto call
finish()
when you callsupportFinishAfterTransition()
.You can finish your activity in the onStop function, if you only want this to happen when you transition from A to B then create a flag and set it after you call startActivity(ctx,intent, bundle):
Make sure when you are done with activity B to call finish() and not finishAfterTranstion() since activity A is no longer there
After finishing the activity A, shared element in B might hang in screen if you press back. Set transitionName to null in
ActivityB.onEnterAnimationComplete
to avoid this.Try out finishAfterTransition() method in 5.0 and above you can finish the activity after the exit transition occurs.