val bottomSheetBehavior = BottomSheetBehavior.from(binding.rootBottomSheet)
bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
bottomSheetBehavior.skipCollapsed = true
bottomSheetBehavior.peekHeight = 0
bottomSheetBehavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
var tempSlideOffsetRatio = 0f
override fun onStateChanged(bottomSheet: View, newState: Int) {
if (newState != BottomSheetBehavior.STATE_DRAGGING) {
if (tempSlideOffsetRatio < 0.5) {
finish()
} else {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
}
} else if (newState == BottomSheetBehavior.STATE_COLLAPSED) {
finish()
}
}
override fun onSlide(bottomSheet: View, slideOffset: Float) {
tempSlideOffsetRatio = slideOffset
}
})
本人页面是一个普通的activity 使用了 BottomSheetBehavior 变相实现了 BottomSheetBehaviorDialog 功能,依照大厂App交互,跳过折叠交互,滑动超过当前wrap_content内容的距离一半时,关闭页面,否则重新弹开页面。