浮动按钮到工具栏动画

FloatingButton to Toolbar animation

我在我的应用程序上使用了一个浮动按钮,但我想像视频中那样转换为工具栏,有人有这方面的示例吗?如果没有,请不要担心,我是开始开发,但我想要一个指南,谢谢

我有这个选项:

ViewCompat.animate(view).setDuration(1000).scaleYBy(1).scaleXBy(1).start();

或此选项:

 ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionView, EXTRA_IMAGE);

sample video

我找到了解决方案,我没有得到相同的结果,但对我有用,我 post 我的代码:

private void animateBottomToolbar() {
    AnimatorSet set = new AnimatorSet().setDuration(500L);
    if(bottomToolbarShowing) {
        //hide toolbar
        set.playTogether(
                ObjectAnimator.ofFloat(toolbarBottom, "scaleY", 1.0f, 0.0f),
                ObjectAnimator.ofFloat(addButton, "scaleY", 0.0f, 1.0f)
        );

        set.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationStart(animation);
                addButton.setVisibility(View.VISIBLE);
                toolbarBottom.setVisibility(View.GONE);
                animation.removeAllListeners();
            }
        });

        set.setInterpolator(new OvershootInterpolator());
        set.start();
        bottomToolbarShowing = false;
    } else {
        //show toolbar
        if (floatMenuOpen) animateFloatingMenu();
        set.playTogether(
                ObjectAnimator.ofFloat(toolbarBottom, "scaleY", 0.0f, 1.0f),
                ObjectAnimator.ofFloat(addButton, "scaleY", 1.0f, 0.0f)
        );

        set.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationStart(Animator animation) {
                super.onAnimationStart(animation);
                addButton.setVisibility(View.GONE);
                toolbarBottom.setVisibility(View.VISIBLE);
                animation.removeAllListeners();
                inflateMenuOnBottomToolbar();
            }
        });
        set.setInterpolator(new OvershootInterpolator());
        set.start();
        bottomToolbarShowing = true;
    }

}