我正在为自己的布局之一使用BottomSheet View 。对于一个非常特殊的情况,我需要BottomSheet的动画持续时间,该动画持续时间通过setState(...)方法在布局中滑动。应该是大约400毫秒左右,但我不希望在这种情况下没有一个“魔术”数字。

最佳答案

是的,您可以在 Bottom Sheet 中添加动画。
H

      // init the bottom sheet behavior
        BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(mBottomSheet);

        // change the state of the bottom sheet
        bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);

        // set callback for changes
        bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
            @Override
            public void onStateChanged(@NonNull View bottomSheet, int newState) {
                // Called every time when the bottom sheet changes its state.
            }

            @Override
            public void onSlide(@NonNull View bottomSheet, float slideOffset) {
                if (isAdded()) {
                    animateBottomSheetArrows(slideOffset);
                }
            }
        });
    }

    private void animateBottomSheetArrows(float slideOffset) {
        // Animate counter-clockwise
        mLeftArrow.setRotation(slideOffset * -180);
        // Animate clockwise
        mRightArrow.setRotation(slideOffset * 180);
}

关于android - BottomSheet动画时长,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51720891/

10-16 22:07