你可以使用BottomSheetCallback
来实现它。你只需要将视图旋转到回调提供的偏移量即可。例如:
这是通过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);
}
});
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) {
}
});