2
votes

I tried to change the visibility of the shared element (ImageView) in the transition listener. But the changes are applied only for a moment and then return to the original state.

In this case, I have a photo viewer activity that starts with an shared element transition animation and I want to make the shared element GONE after the animation is over. Then add a photo view fragment instead.

         window.getSharedElementEnterTransition().addListener(new Transition.TransitionListener() {
            @Override
            public void onTransitionStart(Transition transition) {

            }

            @Override
            public void onTransitionEnd(Transition transition) {
                if (!isBackPressed) {
                    image.setVisibility(View.GONE);
                    addMediaFragment(uri);
                }
            }

            @Override
            public void onTransitionCancel(Transition transition) {
            }

            @Override
            public void onTransitionPause(Transition transition) {

            }

            @Override
            public void onTransitionResume(Transition transition) {

            }
        });
        window.getSharedElementReturnTransition().addListener(new Transition.TransitionListener() {
            @Override
            public void onTransitionStart(Transition transition) {
                image.setVisibility(View.VISIBLE);
                removeMediaFragment();
            }

            @Override
            public void onTransitionEnd(Transition transition) {

            }

            @Override
            public void onTransitionCancel(Transition transition) {

            }

            @Override
            public void onTransitionPause(Transition transition) {

            }

            @Override
            public void onTransitionResume(Transition transition) {

            }
        });
1

1 Answers

0
votes

I suggest you use fade animation and add to your transition

Fade moreScene = new Fade();
moreScene.addTarget(R.id.activity_new_layout_img);
moreScene.setDuration(300);
moreTransitionSet.addTransition(moreScene);