Android - Shared element transitions with calling activity finish()

F.A. picture F.A. · Apr 9, 2015 · Viewed 10.7k times · Source

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?

Answer

l-l picture l-l · Apr 16, 2015

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):

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

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.