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:
-
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.layoutInflaterem vez deLayoutInflater.from(context). -
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 = falsepara esconder a View. -
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. -
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.