Doc Core

O SDK oferece uma série de opções para personalizar a interface do DocCore, permitindo alinhar as cores, fontes, ícones e layouts. A customização é realizada através do DocCoreTheme, que reúne configurações para todas as telas do fluxo: instruções, captura, carregamento e resultado.

Estrutura do DocCoreTheme

O DocCoreTheme é dividido em quatro partes principais:

  1. Tela de Instruções (DocCoreCustomInstructionsBuilder)
  2. Tela de Captura (CustomCaptureScreenBuilder)
  3. Tela de Carregamento (CustomLoadingDialogBuilder)
  4. Tela de Resultado (CustomResultScreenBuilder)

Além disso, o tema permite definir fontes globais através de fontsKey, garantindo consistência na tipografia em todas as telas.


Passo a Passo de Configuração

  1. Defina cada parte do tema: Configure cada tela utilizando os construtores disponíveis.
  2. Combine as partes no DocCoreTheme: Reúna as configurações em um único tema.
  3. Aplique o tema ao DocCoreProvider: Passe o tema configurado ao DocCoreOitiProvider.

Exemplo de Configuração Geral

val docCoreProvider = DocCoreOitiProvider(getDocCoreThemeBuilder())
hubManager.addProvider(docCoreProvider)

fun getDocCoreThemeBuilder(): DocCoreTheme {
    return DocCoreTheme.Builder()
        .setInstructionsTheme(getDocCoreInstructionsTheme())
        .setCaptureTheme(getDocCoreCaptureScreenBuilder())
        .setLoadingDialogTheme(getDocCoreLoadingBuilder())
        .setResultScreenTheme(getDocCoreResultScreenBuilder())
        .setFontsKey(getDocCoreFonts())
        .build()
}

Tela de Instruções

A tela de instruções apresenta orientações para o usuário sobre como realizar a captura dos documentos ou seguir o fluxo. Personalize os textos, ícones, cores e botões.

Exemplo de Configuração

private fun getDocCoreInstructionsTheme(): DocCoreCustomInstructionsBuilder {
    return DocCoreCustomInstructionsBuilder.Builder()
        .setTitleText("Título Personalizado")
        .setCaptionText("Subtítulo Personalizado")
        .setBackgroundColor("#F5F5F5")
        .setDocumentTypesInstructionIcon(R.drawable.ic_document)
        .setDocumentTypesInstructionText("Texto sobre os tipos de documentos aceitos.")
        .setDocumentTypesInstructionTextColor("#333333")
        .setDocumentTypesInstructionIconBackgroundColor("#E0E0E0")
        .setDocumentTypesInstructionIconBorderColor("#FF5733")
        .setDocumentTipsInstructionIcon(R.drawable.ic_tips)
        .setDocumentTipsInstructionText("Texto com dicas importantes para a captura.")
        .setDocumentTipsInstructionTextColor("#757575")
        .setDocumentTipsInstructionIconBackgroundColor("#EEEEEE")
        .setDocumentTipsInstructionIconBorderColor("#76FF03")
        .setContextImage(R.drawable.ic_context_image)
        .setBackButtonImg(R.drawable.ic_back_arrow)
        .setBackButtonColor("#FF0000")
        .setContinueButtonText("Avançar")
        .setContinueButtonColor("#4CAF50")
        .setContinueButtonTextColor("#FFFFFF")
        .setBottomSheetColor("#FFFFFF")
        .setBottomSheetCornerRadius(12.0f)
        .build()
}

Tabela de Propriedades da Tela de Instruções

PropriedadeDescriçãoExemplo de Valor
setBackButtonImg (1)Define a imagem do botão de voltarR.drawable
setBackButtonColor (1)Define a cor do botão de voltar"#01012e" ou R.color
setBackgroundColor (2)Define a cor de fundo da tela"#170ec4"
setContextImage (2)Define a imagem de contexto na telaR.drawable
setTitleColor (3)Define a cor do título"#a83290" ou R.color
setTitleText (3)Define o título da tela de instruções"titulo exemplo customizado"
setDocumentTypesInstructionIcon (4)Define o ícone para o tipo de documentoR.drawable
setDocumentTypesInstructionIconBorderColor (4)Define a cor da borda do ícone do tipo de documento"#ff0000" ou R.color
setDocumentTypesInstructionIconBackgroundColor (4)Define a cor de fundo do ícone de tipo de documento"#cc6f16" ou R.color
setDocumentTipsInstructionIcon (5)Define o ícone para as dicas de instrução do documentoR.drawable
setDocumentTipsInstructionIconBackgroundColor (5)Define a cor de fundo do ícone das dicas"#012e0a" ou R.color
setDocumentTipsInstructionIconBorderColor (5)Define a cor da borda do ícone das dicas"#00ff00" ou R.color
setBottomSheetColor (6)Define a cor do fundo da barra inferior"#3e32a8" ou R.color
setBottomSheetCornerRadius (6)Define o raio de canto da barra inferior15.0f
setCaptionColor (7)Define a cor do subtítulo"#a86b32" ou R.color
setCaptionText (7)Define o subtítulo da tela de instruções"subtitulo exemplo customizado"
setDocumentTypesInstructionTextColor (8)Define a cor do texto de instrução do tipo de documento"#a8927d" ou R.color
setDocumentTypesInstructionText (8)Define o texto de instrução para o tipo de documento"descricao do primeiro campo"
setDocumentTipsInstructionText (9)Define o texto de dica de instrução para o documento"descricao do segundo campo"
setDocumentTipsInstructionTextColor (9)Define a cor do texto das dicas de instrução do documento"#16cc3a" ou R.color
setContinueButtonText (10)Define o texto do botão de continuar"Continuar button"
setContinueButtonColor (10)Define a cor de fundo do botão de continuar"#2e030a" ou R.color
setContinueButtonTextColor (10)Define a cor do texto do botão de continuar"#0000ff" ou R.color


Tela de Captura

A tela de captura é onde o usuário realiza a captura das imagens necessárias. Com o CustomCaptureScreenBuilder, é possível personalizar botões, cores, textos e comportamentos.

Exemplo de Configuração

private fun getDocCoreCaptureScreenBuilder(): CustomCaptureScreenBuilder {
    return CustomCaptureScreenBuilder.Builder()
        .setBackButtonIcon(drawable.camera_alt)
        .setBackButtonColor("#bcbcd1")
        .setCloseButtonIcon(drawable.people)
        .setCloseButtonColor("#FF0000")
        .setBackgroundColor("#fcba03")
        .setFrontIndicatorText("frontal indicator")
        .setBackIndicatorText("traseira indicator")
        .setIndicatorColor("#0000FF")
        .setFrontIndicatorImage(drawable.camera_alt)
        .setIndicatorTextColor("#FF00FF")
        .setBackIndicatorImage(drawable.doc_img)
        .setInstructionsGuideTextFront("tire uma foto frontal.")
        .setInstructionsGuideTextBack("foto traseira.")
        .setInstructionsGuideTextConfirmation("Confirmacao das fotos")
        .setInstructionsGuideColor("#0000FF")
        .setCapturePreviewBorderColorCaptured("#008000")
        .setCapturePreviewBorderColorUncaptured("#FF0000")
        .setCaptureButtonIcon(drawable.env)
        .setCaptureButtonColor("#00FFFF")
        .setBottomSheetColor("#3e32a8")
        .setSelectedIndicatorColor("#db820d")
        .setBottomSheetCornerRadius(15.0f)
        .setConfirmationMessageText("Confirmando se ficou boa")
        .setConfirmationMessageColor("#FFFFFF")
        .setConfirmButtonText("simButton")
        .setConfirmButtonTextConfirmation("confime aqui")
        .setConfirmButtonColor("#00FF00")
        .setRetryButtonText("NãoButton")
        .setRetryButtonColor("#FF0000")
        .setCaptureButtonBorderColor("#ff0000")
        .build()
}

Tabela de Propriedades da Tela de Captura

PropriedadeDescriçãoExemplo de Valor
setBackButtonIcon(1)Define o ícone do botão de voltardrawable.camera_alt
setBackButtonColor(1)Define a cor do botão de voltar"#bcbcd1" ou R.color
setInstructionsGuideColor(2)Define a cor do texto das instruções"#0000FF" ou R.color
setInstructionsGuideTextFront(2)Define o texto de instrução para a foto frontal"tire uma foto frontal."
setInstructionsGuideTextBack(2)Define o texto de instrução para a foto traseira"foto traseira."
setCapturePreviewBorderColorCaptured(3)Define a cor da borda do preview de captura quando a captura foi realizada"#008000" ou R.color
setCapturePreviewBorderColorUncaptured(3)Define a cor da borda do preview de captura quando a captura não foi realizada"#FF0000" ou R.color
setCaptureButtonIcon(4)Define o ícone do botão de capturadrawable.env
setCaptureButtonColor(4)Define a cor do botão de captura"#00FFFF" ou R.color
setCaptureButtonBorderColor(4)Define a cor da borda do botão de captura"#ff0000" ou R.color
setCloseButtonIcon(5)Define o ícone do botão de fechardrawable.people
setCloseButtonColor(5)Define a cor do botão de fechar"#FF0000" ou R.color
setBackgroundColor(6)Define a cor de fundo da tela de captura"#fcba03" ou R.color
setInstructionsGuideTextConfirmation(7)Define o texto de confirmação das instruções"Confirmacao das fotos"
setConfirmationMessageText(7)Define o texto da mensagem de confirmação"Confirmando se ficou boa"
setConfirmationMessageColor(7)Define a cor da mensagem de confirmação"#FFFFFF" ou R.color
setRetryButtonText(8)Define o texto do botão de tentativa"NãoButton"
setRetryButtonColor(8)Define a cor do botão de tentativa"#FF0000" ou R.color
setIndicatorColor(9)Define a cor do indicador"#0000FF" ou R.color
setFrontIndicatorText(9)Define o texto do indicador frontal"frontal indicator"
setBackIndicatorText(9)Define o texto do indicador traseiro"traseira indicator"
setIndicatorTextColor(9)Define a cor do texto do indicador"#FF00FF" ou R.color
setFrontIndicatorImage(9)Define a imagem para o indicador frontaldrawable.camera_alt
setBackIndicatorImage(9)Define a imagem para o indicador traseirodrawable.doc_img
setSelectedIndicatorColor(9)Define a cor do indicador selecionado"#db820d" ou R.color
setBottomSheetColor(10)Define a cor da barra inferior"#3e32a8" ou R.color
setBottomSheetCornerRadius(10)Define o raio dos cantos da barra inferior15.0f
setConfirmButtonText(11)Define o texto do botão de confirmação"simButton"
setConfirmButtonColor(11)Define a cor do botão de confirmação"#00FF00" ou R.color
setConfirmButtonTextConfirmation(11)Define o texto alternativo do botão de confirmação"confime aqui"


Tela de Carregamento

A tela de carregamento aparece enquanto o SDK processa os dados. Personalize os elementos utilizando o CustomLoadingDialogBuilder.

Exemplo de Configuração

private fun getDocCoreLoadingBuilder(): CustomLoadingDialogBuilder {
    return CustomLoadingDialogBuilder.Builder()
        .setCircularProgressIndicatorColor("#4CAF50")
        .setBackgroundColor("#F5F5F5")
        .setCircularProgressIndicatorSize(100)
        .setCircularProgressIndicatorWidth(10)
        .build()
}

Tabela de Propriedades da Tela de Carregamento

PropriedadeDescriçãoExemplo de Valor
setCircularProgressIndicatorColor(1)Define a cor do indicador de progresso circular"#4CAF50" ou R.color
setCircularProgressIndicatorSize(1)Define o tamanho do indicador de progresso circular (em pixels)100 (Int)
setCircularProgressIndicatorWidth(1)Define a largura do traço do indicador de progresso circular (em pixels)10 (Int)
setBackgroundColor(2)Define a cor de fundo do diálogo de carregamento"#F5F5F5" ou R.color


Tela de Resultado

A tela de resultado é exibida ao final do processo, indicando sucesso ou falha. Personalize os textos, ícones e cores de acordo com as mensagens do fluxo.

Exemplo de Configuração

private fun getDocCoreResultScreenBuilder(): CustomResultScreenBuilder {
    return CustomResultScreenBuilder.Builder()
        .setSuccessBackgroundColor("#4CAF50")
        .setSuccessIcon(R.drawable.ic_success)
        .setSuccessText("Documento capturado com sucesso!")
        .setErrorBackgroundColor("#FF0000")
        .setErrorIcon(R.drawable.ic_error)
        .setErrorText("Falha na captura do documento.")
        .setRetryButtonColor("#000000")
        .setRetryButtonText("Tentar novamente")
        .setRetryButtonTextColor("#FFFFFF")
        .build()
}

Tabela de Propriedades da Tela de Resultado

PropriedadeDescriçãoExemplo de Valor
setErrorIcon(1)Ícone para o estado de erroR.drawable.ic_error
setSuccessIcon(1)Ícone para o estado de sucessoR.drawable.ic_success
setSuccessText(2)Texto para o estado de sucesso"Documento capturado com sucesso!"
setErrorText(2)Texto para o estado de erro"Falha na captura do documento."
setRetryButtonColor(3)Cor do botão de tentar novamente"#000000" ou R.color
setRetryButtonText(3)Texto do botão de tentar novamente"Tentar novamente"
setRetryButtonTextColor(3)Cor do texto do botão de tentar novamente"#FFFFFF" ou R.color
setErrorBackgroundColor(4)Cor de fundo para o estado de erro"#FF0000" ou R.color
setSuccessBackgroundColor (4)Cor de fundo para o estado de sucesso"#4CAF50" ou R.color


Customização de Fontes no DocCore

O DocCoreTheme permite que você personalize as fontes utilizadas em diferentes partes da interface. A customização é feita utilizando um HashMap, que associa as chaves (DocCoreFontsKey) às fontes desejadas. É possível usar tanto fontes dos recursos (R.font) quanto caminhos diretos no diretório assets.

Configurando as Fontes

O exemplo a seguir demonstra como configurar as fontes personalizadas para o tema.

private fun getDocCoreFonts(): Map<DocCoreFontsKey, *> {
    return mapOf(
        DocCoreFontsKey.INSTRUCTIONS_TITLE_FONT to R.font.custom_font_title,
        DocCoreFontsKey.INSTRUCTIONS_CAPTION_FONT to "fonts/custom_caption.ttf",
        DocCoreFontsKey.INSTRUCTIONS_DOCUMENT_TYPES_INSTRUCTIONS_FONT to R.font.custom_font_doc_types,
        DocCoreFontsKey.INSTRUCTIONS_DOCUMENT_TIPS_INSTRUCTIONS_FONT to "fonts/custom_tips.ttf",
        DocCoreFontsKey.INSTRUCTIONS_BUTTON_FONT to R.font.custom_button_font,
        DocCoreFontsKey.CAPTURE_INSTRUCTION_TEXT_FONT to "fonts/custom_capture_text.ttf",
        DocCoreFontsKey.CAPTURE_INSTRUCTION_GUIDE_FONT to R.font.custom_guide_font,
        DocCoreFontsKey.CAPTURE_BOTTOM_SHEET_FONT to "fonts/custom_bottom_sheet.ttf",
        DocCoreFontsKey.CAPTURE_CONFIRMATION_MESSAGE_FONT to R.font.custom_confirmation_font,
        DocCoreFontsKey.CAPTURE_CONFIRM_BUTTON_FONT to "fonts/custom_confirm_button.ttf",
        DocCoreFontsKey.CAPTURE_RETRY_BUTTON_FONT to R.font.custom_retry_button_font,
        DocCoreFontsKey.RESULT_MESSAGE_FONT to "fonts/custom_result_message.ttf",
        DocCoreFontsKey.RESULT_RETRY_BUTTON_FONT to R.font.custom_retry_font
    )
}

Tabela de Referência: Fontes no DocCore

Chave (DocCoreFontsKey)DescriçãoExemplo
INSTRUCTIONS_TITLE_FONTFonte para o título da tela de instruçõesR.font.custom_font_title ou "caminho.ttf"
INSTRUCTIONS_CAPTION_FONTFonte para o subtítulo da tela de instruçõesR.font.custom_caption_font ou "caminho.ttf"
INSTRUCTIONS_DOCUMENT_TYPES_INSTRUCTIONS_FONTFonte para o texto de tipos de documentosR.font.custom_font_doc_types ou "caminho.ttf"
INSTRUCTIONS_DOCUMENT_TIPS_INSTRUCTIONS_FONTFonte para o texto de dicas na tela de instruçõesR.font.custom_tips_font ou "caminho.ttf"
INSTRUCTIONS_BUTTON_FONTFonte para o botão da tela de instruçõesR.font.custom_button_font ou "caminho.ttf"
CAPTURE_INSTRUCTION_TEXT_FONTFonte para o texto de instruções na tela de capturaR.font.custom_capture_text_font ou "caminho.ttf"
CAPTURE_INSTRUCTION_GUIDE_FONTFonte para o guia de instruções na tela de capturaR.font.custom_guide_font ou "caminho.ttf"
CAPTURE_BOTTOM_SHEET_FONTFonte para o texto da barra inferior na tela de capturaR.font.custom_bottom_sheet_font ou "caminho.ttf"
CAPTURE_CONFIRMATION_MESSAGE_FONTFonte para a mensagem de confirmação na tela de capturaR.font.custom_confirmation_font ou "caminho.ttf"
CAPTURE_CONFIRM_BUTTON_FONTFonte para o botão de confirmação na tela de capturaR.font.custom_confirm_button_font ou "caminho.ttf"
CAPTURE_RETRY_BUTTON_FONTFonte para o botão de tentar novamente na tela de capturaR.font.custom_retry_button_font ou "caminho.ttf"
RESULT_MESSAGE_FONTFonte para a mensagem de resultado na tela de resultadoR.font.custom_result_message_font ou "caminho.ttf"
RESULT_RETRY_BUTTON_FONTFonte para o botão de tentar novamente na tela de resultadoR.font.custom_retry_font ou "caminho.ttf"

Aplicando o Mapa de Fontes ao Tema

Depois de configurar o mapa com as fontes, aplique-o ao tema principal DocCoreTheme:

fun getDocCoreThemeBuilder(): DocCoreTheme {
    return DocCoreTheme.Builder()
        .setInstructionsTheme(getDocCoreInstructionsTheme())
        .setCaptureTheme(getDocCoreCaptureScreenBuilder())
        .setLoadingDialogTheme(getDocCoreLoadingBuilder())
        .setResultScreenTheme(getDocCoreResultScreenBuilder())
        .setFontsKey(getDocCoreFonts()) // Aplica o mapa de fontes aqui
        .build()
}