双屏布局库

重要

本文介绍的功能和指南为公共预览版,在正式发布之前可能会有重大修改。 Microsoft 不对此处提供的信息作任何明示或默示的担保。

这些库包含一组视图、布局、帮助程序函数等内容,有助于 Android 开发人员为可折叠设备创建应用程序。

你可以将创建并处理所有屏幕模式的任务交由我们的组件来完成,你只需专注于如何创建自己的卓越应用就可以了。

模块

  • 底部导航 - 包含具有双屏行为的自定义 BottomNavigationView。

    • BottomNavigationView 让你能够移动左侧或右侧屏幕上的 BottomNavigationView。
  • FragmentsHandler - 包含用于在不同屏幕模式下处理片段的代码。

    • 当活动过渡到双屏或单屏模式时,FragmentManagerStateHandler 能够还原屏幕模式特定的片段。
  • 布局 - 包含有助于创建双屏设备 UI 的布局。

    • FoldableLayout 会创建用于保存 UI 的 SingleScreenDualScreen 容器。
    • FoldableFrameLayout 让你能够跨子视图显示或在左侧或右侧屏幕上移动它们。
  • RecyclerView - 包含自定义 RecyclerView.ItemDecoration 和具有双屏行为的 LayoutManager 类。

    • 在应用程序处于跨屏幕模式时,FoldableItemDecoration 会为单元格添加间距以覆盖设备铰链。 这应该与 FoldableLayoutManager 一起使用。
    • FoldableLayoutManager 在设备处于单屏模式时会提供 LinearLayoutManager,在设备处于跨区模式时则提供 GridLayoutManager
    • 在应用程序处于跨屏幕模式时,FoldableStaggeredItemDecoration 会为单元格添加间距以覆盖设备铰链。 这应该与 FoldableStaggeredLayoutManager 一起使用。
    • FoldableStaggeredLayoutManager 在设备处于单屏模式时会提供 LinearLayoutManager,在设备处于跨区模式时则提供 StaggeredGridLayoutManager
  • 选项卡 - 包含具有双屏行为的自定义 TabLayout 类。

    • TabLayout 可以检测可折叠功能,并提供将其选项卡排列在左侧或右侧的选项。
  • 可折叠设备导航组件 - 基于 Google 导航组件,此组件包含一组可实现双屏导航模式的库。

  • Snackbar - 一个自定义 FrameLayout,可用作 Snackbar 的容器以将其放置在可折叠设备上。

声明依赖项

  1. 确保顶级 build.gradle 文件中有 mavenCentral() 存储库 :

    allprojects {
        repositories {
            google()
            mavenCentral()
         }
    }
    
  2. 将需要的依赖项添加到模块级别的 build.gradle 文件中(当前版本可能与此处显示的不同):

    底部导航

    implementation "com.microsoft.device.dualscreen:bottomnavigation:1.0.0-beta4"
    

    片段处理程序

    implementation "com.microsoft.device.dualscreen:fragmentshandler:1.0.0-beta5"
    

    布局

    implementation "com.microsoft.device.dualscreen:layouts:1.0.0-beta8"
    

    选项卡

    implementation "com.microsoft.device.dualscreen:tabs:1.0.0-beta4"
    

    RecyclerView

    implementation "com.microsoft.device.dualscreen:recyclerview:1.0.0-beta6"
    

    SnackbarContainer

    implementation "com.microsoft.device.dualscreen:snackbar:1.0.0-alpha2"
    

    可折叠设备导航组件

    def nav_version = "1.0.0-alpha3"
    
    // Java language implementation
    implementation "com.microsoft.device.dualscreen:navigation-fragment:$nav_version"
    implementation "com.microsoft.device.dualscreen:navigation-ui:$nav_version" 
    
    // Kotlin
    implementation "com.microsoft.device.dualscreen:navigation-fragment-ktx:$nav_version"
    implementation "com.microsoft.device.dualscreen:navigation-ui-ktx:$nav_version"
    

已弃用的模块

重要

这些布局的初始版本打包在一个单一的库 com.microsoft.device:dualscreen-layout 中。

此库已弃用。 我们建议为所需的控件使用以上单独的库。

  • ScreenManager(已弃用) - 包含我们的组件用于开发双屏设备所需的核心类。 你也可以直接在代码中使用这些类。

    • 使用 ScreenManagerProvider 获取 SurfaceDuoScreenManager 的单个实例。
    • 使用 SurfaceDuoScreenManager 注册侦听器,以便在屏幕模式发生更改时收到通知。
    • 使用 ScreenInfoProvider 获取 ScreenInfo 的实例。
    • 可以使用 ScreenInfo 获取不同的屏幕信息,具体取决于屏幕模式。

    如果希望选择使用显示掩码 API 的版本,则将以下行添加到 gradle 文件。

    implementation "com.microsoft.device.dualscreen:screenmanager-displaymask:1.0.0-beta4"
    

    或者,如果希望选择使用窗口管理器 API 的版本,则添加以下行。

    implementation "com.microsoft.device.dualscreen:screenmanager-windowmanager:1.0.0-beta4"