Partilhar via


Personalizar botões

Para implementar ações personalizadas ou modificar o layout do botão atual, você pode interagir com a API da Biblioteca Nativa da Interface do Usuário. Essa API envolve a definição de configurações de botão personalizadas, a especificação de ações e o gerenciamento das ações atuais da barra de botões. A API fornece métodos para adicionar ações personalizadas e remover botões existentes, todos acessíveis por meio de chamadas de função simples.

Essa funcionalidade fornece um alto grau de personalização e garante que a interface do usuário permaneça coesa e consistente com o design geral do aplicativo.

Pré-requisitos

Configurar o recurso

Remover botões

CallCompositeCallScreenControlBarOptions, permita a flexibilidade de personalizar botões removendo botões específicos, como câmera, microfone e controles de áudio. Essa API permite que você personalize a interface do usuário de acordo com seus requisitos específicos de aplicativo e design de experiência do usuário. Basta definir o visible ou enabled para false o CallCompositeButtonViewData botão para ocultar ou desativar.

Captura de tela que mostra a experiência de remoção de botões na Biblioteca da Interface do Usuário.

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)

O botão pode ser atualizado após o lançamento do composto de chamadas.

cameraButton.setVisible(true)

Adicionar ações personalizadas

Call composite está usando ícones de interface do usuário Fluent. Você pode baixar os ícones diretamente do repositório Fluent UI GitHub e incorporá-los ao seu projeto, conforme necessário. Essa abordagem garante a consistência visual em todos os elementos da interface do usuário, melhorando a experiência geral do usuário.

Captura de tela que mostra a experiência quando você adiciona um novo botão à Biblioteca da Interface do Usuário.


// 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)

Semelhante aos Call composite botões fornecidos, os botões personalizados são atualizáveis após o lançamento.

customButton.setVisible(true)

Remover ou desativar botões

CallScreenControlBarOptions, permita a flexibilidade de personalizar botões removendo botões específicos, como câmera, microfone e controles de áudio. Essa API permite que você personalize a interface do usuário de acordo com seus requisitos específicos de aplicativo e design de experiência do usuário. Basta definir o visible ou enabled para false o ButtonViewData botão para ocultar ou desativar.

Captura de tela que mostra a experiência de remoção de botões na Biblioteca da Interface do Usuário.

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)

O botão pode ser atualizado após o lançamento do composto de chamadas.

cameraButton.visible = true

Adicionar ações personalizadas

Call composite está usando ícones de interface do usuário Fluent. Você pode baixar os ícones diretamente do repositório Fluent UI GitHub e incorporá-los ao seu projeto, conforme necessário. Essa abordagem garante a consistência visual em todos os elementos da interface do usuário, melhorando a experiência geral do usuário.

Captura de tela que mostra a experiência quando você adiciona um novo botão à Biblioteca da Interface do Usuário.

// 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)

Semelhante aos Call composite botões fornecidos, os botões personalizados são atualizáveis após o lançamento.

customButton.enabled = true

Próximos passos