Подтвердить что ты не робот

Как узнать, когда заканчивается переход от общего элемента

Я работаю с Shared Element Transitions между действиями. Переход работает нормально, но я хочу знать, когда заканчивается переход общих элементов, чтобы я мог показывать другие вещи.

Я попытался использовать onSharedElementEnd в SharedElementCallback в активности, к которой я перехожу, но который вызывается до начала перехода.

есть ли еще один обратный вызов, который я могу прослушать?

4b9b3361

Ответ 1

Вы пытались связать прослушиватель анимации с общим представлением элементов внутри onMapSharedElements? ViewCompat.animate(view) предоставит вам либо новый, либо кешированный ViewPropertyAnimator(Compat), а затем привязка прослушивателя анимации должна быть тривиальной. Я даже не пробовал.

setEnterSharedElementCallback(new SharedElementCallback() {
            @Override
            public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
                super.onMapSharedElements(names, sharedElements);
                View keySharedElementView = sharedElements.get("keySharedElement");
                if(keySharedElementView != null){
                    ViewCompat.animate(keySharedElementView).setListener(new ViewPropertyAnimatorListenerAdapter(){
                        @Override
                        public void onAnimationEnd(View view) {
                            super.onAnimationEnd(view);
                        }
                    });
                }
            }
        });

Как насчет добавления Transition.Listener в общий переход элемента?

 Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition();
 sharedElementEnterTransition.addListener(new TransitionListenerAdapter() {
         @Override
          public void onTransitionEnd(android.support.transition.Transition transition) {
                    super.onTransitionEnd(transition);
           }
      });

Ответ 2

Попробуйте onEnterAnimationComplete() обратный вызов вашей активности.

Готов поспорить, это именно то, что вы ищете.

 @Override
    public void onEnterAnimationComplete() {
        super.onEnterAnimationComplete();

    //your code 
    }

Ответ 3

Вот что я делаю в фрагменте:

Transition sharedElementEnterTransition = getActivity().getWindow().getSharedElementEnterTransition();
    sharedElementEnterTransition.addListener(new Transition.TransitionListener() {
        @Override
        public void onTransitionStart(Transition transition) {

        }

        @Override
        public void onTransitionEnd(Transition transition) {

        }

        @Override
        public void onTransitionCancel(Transition transition) {

        }

        @Override
        public void onTransitionPause(Transition transition) {

        }

        @Override
        public void onTransitionResume(Transition transition) {

        }
    });