首页 文章

在滑动bottomSheet时动画箭头按钮

提问于
浏览
1

我有一张底片,在滑动时我需要设置动画箭头按钮,指示天气用户向上或向下滑动?
enter image description here

这是我的样品测试,当您在图像中看到的同时滑动底部纸张时,底部的箭头按钮应向上旋转,同时向上滑动,向下滑动按钮应向上旋转 .

谢谢,杰伊

2 回答

  • 8

    萨钦的答案很棒 .

    这是另一种解决方案,通过保持底部纸张的先前状态 .

    int  previousBottomSheetState = BottomSheetBehavior.STATE_COLLAPSED
    
      bottom_sheet.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
                @Override
                public void onStateChanged(@NonNull View bottomSheet, int newState) {
                    //to prevent rotation of the arrow if the users swipes down or up again, even when its already collapsed or expanded.
                    if (newState == BottomSheetBehavior.STATE_EXPANDED && newState != previousBottomSheetState) {
                        //update my bottomsheet state.
                        previousBottomSheetState = BottomSheetBehavior.STATE_EXPANDED;
                        (yourView).animate().rotationXBy(180).start();
                    } else if (newState == BottomSheetBehavior.STATE_COLLAPSED && newState != previousBottomSheetState) {
                        previousBottomSheetState = BottomSheetBehavior.STATE_COLLAPSED;
                        (yourView).animate().rotationXBy(180).start();
                    }
                }
    
                @Override
                public void onSlide(@NonNull View bottomSheet, float slideOffset) {
                }
            });
    
  • 0

    使用 BottomSheetCallback 可以实现 . 您只需要通过回调提供的偏移来旋转视图 . 例如 :-

    // set callback for changes
    bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
        @Override
        public void onStateChanged(@NonNull View bottomSheet, int newState) {
        }
    
        @Override
        public void onSlide(@NonNull View bottomSheet, float slideOffset) {
            yourView.setRotation(slideOffset * 180);
        }
    });
    

相关问题