你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

自定义按钮

若要实现自定义操作或修改当前按钮布局,可以与本机 UI 库的 API 进行交互。 该 API 涉及定义自定义按钮配置、指定操作以及管理按钮栏的当前操作。 该 API 提供了添加自定义操作和删除现有按钮的方法,所有这些方法都可以通过直接的函数调用来访问。

此功能提供了高度的自定义,并确保用户界面与应用程序的整体设计保持统一和一致。

先决条件

设置功能

删除按钮

CallCompositeCallScreenControlBarOptions,允许通过删除特定按钮(例如摄像头、麦克风和音频控件)来灵活地自定义按钮。 使用该 API,你可以根据特定的应用程序要求和用户体验设计来定制用户界面。 只需为 CallCompositeButtonViewDatavisibleenabled 设置为 false,即可隐藏或禁用按钮。

显示在 UI 库中删除按钮的体验的屏幕截图。

val controlBarOptions = CallCompositeCallScreenControlBarOptions()

val cameraButton = CallCompositeButtonViewData()
    .setVisible(false)

controlBarOptions.setCameraButton(cameraButton)

val callScreenOptions = CallCompositeCallScreenOptions()
    .setControlBarOptions(controlBarOptions)

val localOptions = CallCompositeLocalOptions()
    .setCallScreenOptions(callScreenOptions)

val callComposite = CallCompositeBuilder()
    .build()

callComposite.launch(context, locator, localOptions)

启动调用复合后,可以更新按钮。

cameraButton.setVisible(true)

添加自定义操作

Call composite 使用的是 Fluent UI 图标。 可以直接从 Fluent UI GitHub 存储库下载这些图标,并根据需要将其合并到项目中。 这种方法保证了所有用户界面元素的视觉一致性,增强了整体用户体验。

显示在 UI 库中添加新按钮时的体验的屏幕截图。


// Custom header button
val headerCustomButton =
    CallCompositeCustomButtonViewData(
        "headerCustomButton",
        R.drawable.my_header_button_icon,
        "My header button",
        fun(it: CallCompositeCustomButtonClickEvent) {
            // process my button onClick
        }
    )

val headerOptions = CallCompositeCallScreenHeaderViewData()
    .setCustomButtons(listOf(headerCustomButton))

// Custom control bar button
val controlBarOptions = CallCompositeCallScreenControlBarOptions()

controlBarOptions.setCustomButtons(
    listOf(
        CallCompositeCustomButtonViewData(
            "customButtonId",
            R.drawable.my_button_image,
            "My button",
            fun(it: CallCompositeCustomButtonClickEvent) {
                // Process my button onClick
            },
        )
    )
)

val callScreenOptions = CallCompositeCallScreenOptions()
    .setHeaderViewData(headerOptions)
    .setControlBarOptions(controlBarOptions)

val localOptions = CallCompositeLocalOptions()
    .setCallScreenOptions(callScreenOptions)

val callComposite = CallCompositeBuilder()
    .build()

callComposite.launch(context, locator, localOptions)

Call composite 提供的按钮类似,自定义按钮在启动后可更新。

customButton.setVisible(true)

删除或禁用按钮

CallScreenControlBarOptions,允许通过删除特定按钮(例如摄像头、麦克风和音频控件)来灵活地自定义按钮。 使用该 API,你可以根据特定的应用程序要求和用户体验设计来定制用户界面。 只需为 ButtonViewDatavisibleenabled 设置为 false,即可隐藏或禁用按钮。

显示在 UI 库中删除按钮的体验的屏幕截图。

let cameraButton = ButtonViewData(visible: false)

let callScreenControlBarOptions = CallScreenControlBarOptions(
    cameraButton: cameraButton
)

let callScreenOptions = CallScreenOptions(controlBarOptions: callScreenControlBarOptions)
let localOptions = LocalOptions(callScreenOptions: callScreenOptions)

let callComposite = CallComposite(credential: credential)
callComposite.launch(locator: .roomCall(roomId: "..."), localOptions: localOptions)

启动调用复合后,可以更新按钮。

cameraButton.visible = true

添加自定义操作

Call composite 使用的是 Fluent UI 图标。 可以直接从 Fluent UI GitHub 存储库下载这些图标,并根据需要将其合并到项目中。 这种方法保证了所有用户界面元素的视觉一致性,增强了整体用户体验。

显示在 UI 库中添加新按钮时的体验的屏幕截图。

// Custom header button
let headerCustomButton = CustomButtonViewData(image: UIImage(named: "...")!,
                                              title: "My header button") {_ in
    // Process my button onClick
}
let callScreenHeaderViewData = CallScreenHeaderViewData(
    customButtons: [headerCustomButton]
)

// Custom control bar button
let customButton = CustomButtonViewData(image: UIImage(named: "...")!,
                                        title: "My button") {_ in
    // Process my button onClick
}

let callScreenControlBarOptions = CallScreenControlBarOptions(
    customButtons: [customButton]
)

let callScreenOptions = CallScreenOptions(
    controlBarOptions: callScreenControlBarOptions, headerViewData: callScreenHeaderViewData)

let localOptions = LocalOptions(callScreenOptions: callScreenOptions)

let callComposite = CallComposite(credential: credential)
callComposite.launch(locator: .roomCall(roomId: "..."), localOptions: localOptions)

Call composite 提供的按钮类似,自定义按钮在启动后可更新。

customButton.enabled = true

后续步骤