共享元素返回转换闪烁

3
我正在编写一个自定义返回过渡效果,用于将活动返回到调用活动。该过渡效果会将完成活动的内容淡化为调用活动的最终位置。然而,当该动画完成时,调用活动的共享元素仅会闪烁到最终位置。
以下是我过渡效果中的一段代码: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.viewendValues.view似乎对应于同一个对象(这就是为什么我必须将起始视图重新定位到其原始位置的原因)。

1个回答

0
为什么不使用回调函数?在setEnterSharedElementCallback和setExitSharedElementCallback中执行视图动画,然后在第二个活动的回调函数中执行共享元素转换...希望这能帮到你。
setExitSharedElementCallback(new SharedElementCallback() {
                @Override
                public void onSharedElementEnd(List<String> sharedElementNames, List<View> sharedElements, List<View> sharedElementSnapshots) {                        
                    super.onSharedElementEnd(sharedElementNames, sharedElements, sharedElementSnapshots);
                }
            });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接