0

我正在尝试从https://github.com/bluelinelabs/Conductor库中了解演示示例。

运动看起来像这样

在此处输入图像描述

这是代码,负责动画

public class ArcFadeMoveChangeHandler extends TransitionChangeHandler {
    public ArcFadeMoveChangeHandler() { }

    @Override
    @NonNull
    protected Transition getTransition(@NonNull ViewGroup container, View from, View to, boolean isPush) {
        TransitionSet transition = new TransitionSet()
                .setOrdering(TransitionSet.ORDERING_SEQUENTIAL)
                .addTransition(new Fade(Fade.OUT))
                .addTransition(new TransitionSet().addTransition(new ChangeBounds()).addTransition(new ChangeClipBounds()).addTransition(new ChangeTransform()))
                .addTransition(new Fade(Fade.IN));

        transition.setPathMotion(new ArcMotion());

        return transition;
    }
}

它怎么知道应该为 FAB 执行该动作?如何为 FAB 执行弧形运动,但将屏幕上的所有其余元素设置为 FadeOut?

4

1 回答 1

0

它怎么知道应该为 FAB 执行该动作?

查看文档_Fade

此过渡跟踪开始和结束场景中目标视图可见性的变化,并在视图变得可见或不可见时淡入或淡出。

和文档ChangeBounds(和其他类似的类):

此过渡捕获场景更改前后目标视图的布局边界,并在过渡期间为这些更改设置动画。

所以 Fab(和文本)不会褪色,因为它是导体演示中的共享元素,并且它存在于下一个布局中,并且在两个布局中具有相同的“android:transitionName”。其他一切都改变了能见度,所以它消失了。

如何为 FAB 执行弧形运动,但将屏幕上的所有其余元素设置为 FadeOut?

只需android:transitionName从 textView 中删除。我认为 Conductor 可能会在幕后做一些事情(即手动添加transitionName),所以如果删除transitionName没有帮助,请尝试删除/更改 id,以便在两种布局中都不相同。

于 2017-03-01T14:32:41.237 回答