Мигает переход возврата к общему элементу

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

Вот фрагмент моего перехода createAnimator:

@Override
public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
        TransitionValues endValues) {
    if (startValues == null || endValues == null) {
        return null;
    }

    final ViewGroup startView = (ViewGroup) startValues.view;
    final int startHeight = (int) startValues.values.get(PROPERTY_HEIGHT);
    final int startWidth = (int) startValues.values.get(PROPERTY_WIDTH);

    // Position at the original location
    final int widthSpec = View.MeasureSpec.makeMeasureSpec(startWidth,
            View.MeasureSpec.EXACTLY);
    final int heightSpec = View.MeasureSpec.makeMeasureSpec(startHeight,
            View.MeasureSpec.EXACTLY);
    startView.measure(widthSpec, heightSpec);
    startView.layout(0, 0, startWidth, startHeight);

    final ObjectAnimator animator = ObjectAnimator.ofFloat(startView, "dummyValue", 0f, 1f);
    animator.addUpdateListener(animation -> {
        // Shift start view into end view's frame and fade out at the same time
    });
    return animator;
}

Кажется, я не могу найти способ сказать, что вид при повторном переходе исчезает одновременно. В приведенном выше аниматоре startValues.view и endValues.view, похоже, соответствуют одному и тому же объекту (поэтому мне пришлось переместить начальный вид в исходное положение).


person Jin    schedule 07.10.2015    source источник


Ответы (1)


почему вы не используете обратные вызовы? setExitSharedElementCallback и setEnterSharedElementCallback выполняют анимацию просмотра внутри setEnterShare... обратный вызов второго действия... надеюсь, это поможет вам.

setExitSharedElementCallback(new SharedElementCallback() {
                @Override
                public void onSharedElementEnd(List<String> sharedElementNames, List<View> sharedElements, List<View> sharedElementSnapshots) {                        
                    super.onSharedElementEnd(sharedElementNames, sharedElements, sharedElementSnapshots);
                }
            });
person Webdma    schedule 29.11.2015