Sobes.tech
Middle

Que propriedades pode adicionar como extensão no Android?

sobes.tech IA

Resposta da IA

No desenvolvimento Android, funções e propriedades de extensão permitem adicionar nova funcionalidade a classes existentes sem herança ou uso de decoradores. Isto é especialmente útil ao trabalhar com classes padrão do SDK.

Propriedades de extensão são propriedades que podemos adicionar às classes existentes. Elas não armazenam estado, seu valor calculado é determinado por um getter.

Exemplos de uso de propriedades de extensão em Android:

  1. Simplificação do acesso ao LayoutInflater:

    // Adicionando uma propriedade de extensão para acessar o LayoutInflater
    val Context.layoutInflater: LayoutInflater  
        get() = LayoutInflater.from(this)  
    

    Agora pode-se usar context.layoutInflater em vez de LayoutInflater.from(context).

  2. Propriedade curta para esconder View:

    // Propriedade de extensão para definir a visibilidade de View como GONE
    var View.isVisibleGone: Boolean  
        get() = visibility == View.VISIBLE // Getter para verificar o estado atual  
        set(value) { // Setter para definir o estado  
            visibility = if (value) View.VISIBLE else View.GONE  
        }
    

    Agora pode-se usar view.isVisibleGone = false para esconder a View.

  3. Obter tamanho da tela em DP:

    // Propriedade de extensão para obter a largura da tela em DP
    val Context.screenWidthInDp: Int  
        get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()  
    

    Exemplo de uso: context.screenWidthInDp.

  4. Acesso às SharedPreferences:

    // Propriedade de extensão para obter SharedPreferences pelo nome
    fun Context.sharedPreferences(name: String): SharedPreferences =  
        getSharedPreferences(name, Context.MODE_PRIVATE)  
    

    Embora seja uma função, ela é frequentemente usada como propriedade para acesso conveniente: context.sharedPreferences("my_prefs").

Pontos importantes sobre propriedades de extensão:

  • Elas não podem ter campos de apoio (variáveis que armazenam valor).
  • Devem ser definidas apenas com um getter (somente leitura) ou com getter e setter (leitura-escrita).
  • São compiladas como métodos estáticos, portanto seu uso ocorre através da classe proprietária.

Em essência, em Android, você pode adicionar qualquer propriedade calculada que logicamente pertença à uma classe existente e facilite seu uso, evitando criar funções auxiliares ou classes envolventes.