10 funções úteis da extensão Kotlin para desenvolvedores Android

Apr 28 2023
Melhore a experiência de desenvolvimento do Android usando funções de extensão O que é a função de extensão? Uma função de extensão em Kotlin permite adicionar novas funcionalidades a uma classe existente sem ter que herdar dela ou modificar a própria classe. É uma maneira conveniente de estender a funcionalidade de uma classe de fora da definição de classe.

Melhore a experiência de desenvolvimento do Android usando funções de extensão

Qual é a função de extensão?

Uma função de extensão em Kotlin permite adicionar novas funcionalidades a uma classe existente sem ter que herdar dela ou modificar a própria classe. É uma maneira conveniente de estender a funcionalidade de uma classe de fora da definição de classe.

Pré-requisito

Deve ter conhecimento básico de sintaxe kotlin e android

Vamos fazer algo grande. . .

Imprimir no Logcat

Você pode escrever any objectno logcat facilmente com esta função de extensão. Você não precisa se preocupar em converter qualquer objeto em uma string. Você pode escrevê-lo com a tag padrão ou pode passar a tag personalizada para diferenciar no logcat.

Uso

val text = "This is text"
text.printToLog()

val user = User(
    name = "John",
    id = 1
)
user.printToLog() // With default log tag
user.printToLog(tag = "USER_INFO") // With custom log tag

No Android, sempre temos que trabalhar com as visualizações. Como resultado, é óbvio que temos que trabalhar com a visibilidade da visualização para mostrar ou ocultar uma determinada visualização de texto, visualização de imagem e qualquer outra visualização. Então, essa função ajuda no manuseio da visibilidade. Você pode aplicar diretamente a função gone(), visible()ou invisible()para uma única operação.

Mas se você tiver que lidar com a visibilidade sob uma condição específica, poderá usar as funções goneIf, visibleIfou invisibleIf. Essa função usou o conceito de notação infixa para aumentar a legibilidade do código.

Uso

view.gone()
view.visible()
view.invisible()

// dataFound, loading, and condition should be a valid boolean expression
view goneIf dataFound
view visibleIf loading
view invisibleIf condition

De brinde, é uma coisa simples exibir uma mensagem ou dar um aviso ao usuário. Para isso, você tem que usar a função makeText da classe Toast e passar o contexto e outras coisas junto com o uso da função show para exibir.

Então, essa função de extensão permite que você simplesmente passe uma mensagem, e seu brinde será exibido. Essa função é criada nos escopos Activity e Fragment. Então, você tem que usar dentro desse escopo. Você também pode usar o texto do arquivo de recursos de string usando apenas o id de string.

Uso

toast("This is toast message")
toast(R.string.toast_message)

Como um brinde, podemos ter que usar o Snackbar conforme sua adaptabilidade. Portanto, esta função ajuda você a exibir uma barra de lanches no topo da exibição para exibição de mensagens simples e também pode alterar a duração, se desejar. Você deve usar esta função na exibição ou na exibição raiz.

Uso

rootView.snackbar("This is snackbar message")
rootView.snackbar(R.string.snackbar_message)

// Custom Duration Length
rootView.snackbar("This is snackbar message", duration = Snackbar.LENGTH_SHORT)

Ocultar teclado pode ser uma dor de cabeça se você estiver lidando com as ações do usuário ou se quiser ocultar o teclado programaticamente após uma determinada situação, então esta função será útil. Você precisa simplesmente chamar hideKeyboard()a atividade ou o escopo do fragmento.

Uso

hideKeyboard()

Às vezes, você precisa modificar dinamicamente a visualização de seu arquivo de código, em vez de corrigi-la a partir do XML. Por exemplo, pode ser necessário alterar a largura e a altura da exibição para um determinado cenário ou modificar a margem ou o preenchimento. Então, nesse caso, você precisa passar os pixels para essas funções. Mas você quer mais compreensão de acordo com o padrão de pixel independente de densidade (dp).

Portanto, essa propriedade ajuda você com as conversões px to dpe dp to px. Você pode simplesmente usar a propriedade px para converter dp em px e a propriedade dp para converter px em dp.

Uso

params.setMargins(16.px, 16.px, 16.px, 16.px)

Esta propriedade permite que você verifique as strings. Isso pode ser útil quando você deseja validar apenas os números, apenas o alfabeto ou o alfanumérico nos textos da string. Verifique o exemplo para entender melhor. É baseado na expressão regex. Assim, você pode criar sua própria propriedade de acordo com suas necessidades.

Uso

val isValidNumber = "1234".isDigitOnly // Return true
val isValid = "1234abc".isDigitOnly // Return false
val isOnlyAlphabetic = "abcABC".isAlphabeticOnly // Return true
val isOnlyAlphabetic2 = "abcABC123".isAlphabeticOnly // Return false
val isOnlyAlphanumeric = "abcABC123".isAlphanumericOnly // Return true
val isOnlyAlphanumeric2 = "abcABC@123.".isAlphanumericOnly // Return false

isNull será aplicado a qualquer propriedade. Esta propriedade será utilizada sempre que você quiser verificar a igualdade nula em qualquer objeto. Essa propriedade aumentará a legibilidade do código. Você pode usar obj.isNullem vez de obj == null.

Uso

if (obj.isNull) {
    // Run if object is null
} else {
    // Run if object is not null
}

E se você quiser executar algum código quando um determinado objeto for nulo? Nesse caso, geralmente, você deve usar a condição if com igualdade nula. Mas, em vez disso, você pode usar esta função. Ele executará o bloco quando esse objeto específico for nulo. O conceito é como as outras funções de escopo .

Uso

obj.ifNull { 
    // Write code
}

Ao trabalhar com a data no Android, precisamos fazer algumas personalizações para a data do servidor e para a data legível pelo usuário. Para isso, geralmente usamos a função auxiliar para a conversão.

Mas, aqui, podemos aplicar diretamente esta função na conversão de string para string para data, e podemos usar esta função na data para conversão de data para string. Aqui, passei o formato padrão. Mas você pode mudar isso. Você pode passar o formato personalizado de acordo com seus requisitos.

Uso

val currentDate = Date().toStringFormat()
val currentDate2 = Date().toStringFormat(format = "dd-MM-yyyy")
val date = "2023-01-01".toDate(format = "yyyy-MM-dd")

Espero que as funções de extensão apresentadas tenham sido úteis para simplificar e otimizar seu código. Sinta-se à vontade para modificá-los para atender às suas necessidades individuais e incluí-los em seus projetos.

Obrigado por tomar o tempo para lê-lo. Você pode me dar uma palmada para este artigo até 50 palmas.

Você pode se conectar comigo no Twitter , LinkedIn ou Github .

Eu esqueci alguma coisa? Por favor, comente abaixo.