📜  bottomsheet 堆叠架构 (1)

📅  最后修改于: 2023-12-03 14:39:34.792000             🧑  作者: Mango

BottomSheet堆叠架构

BottomSheet堆叠架构是一种布局风格,它类似于弹出菜单,但是更具可定制性和交互性。 BottomSheet可以通过手势或代码来触发,可以是完整屏幕或屏幕的一部分。它非常适合需要展示上下文信息的应用程序,例如地图应用程序、音乐应用程序和图像编辑器等。

基础知识

BottomSheet是一种由Google Material Design规范定义的UI控件。它的样式分为两种:

  • Persistent BottomSheet
  • Modal BottomSheet

Persistent BottomSheet是常驻在屏幕上的BottomSheet,一般使用在主界面的下方,常用于功能性界面:

Persistent BottomSheet示例

Modal BottomSheet是弹窗类型的BottomSheet,一般使用在需要提供更多信息的情况下:

Modal BottomSheet示例

如何使用
添加BottomSheet

要在您的项目中使用BottomSheet,请在布局文件中将BottomSheet的父容器定义为CoordinatorLayout:

<CoordinatorLayout
  android:id="@+id/coordinator_layout"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
     // 添加其他子控件...
     ...
     //添加 BottomSheet
     <FrameLayout
       android:id="@+id/bottom_sheet"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@android:color/white"
       app:layout_behavior="@string/bottom_sheet_behavior"/>
</CoordinatorLayout>

在BottomSheet子项上添加属性,指定该BottomSheet是Persistent BottomSheet还是Modal BottomSheet:

<FrameLayout
  android:id="@+id/bottom_sheet"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="@android:color/white"
  app:behavior_hideable="true"
  app:behavior_peekHeight="56dp"
  app:layout_behavior="@string/bottom_sheet_behavior">
   // Your BottomSheet content
    ...
</FrameLayout>
给BottomSheet添加动画

BottomSheet具有几个预定义的动画,以控制展开和折叠时的动画。这可以通过BottomSheetBehavior来实现:

BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(bottom_sheet);
bottomSheetBehavior.setPeekHeight(200);
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
bottomSheetBehavior.setBottomSheetCallback(new BottomSheetCallback() {
  @Override
  public void onStateChanged(@NonNull View bottomSheet, int newState) {
    //UI状态发生变化
  }

  @Override
  public void onSlide(@NonNull View bottomSheet, float slideOffset) {
    //UI正在拖动
  }
});
结论

BottomSheet是一种非常有用的布局技术,它可以为您的应用程序提供可定制的上下文信息。如果您正在开发一个需要这种布局风格的应用程序,可以尝试使用BottomSheet进行构建。