¿Qué propiedades puedes agregar como extensión en Android?
sobes.tech AI
Respuesta de la IA
En el desarrollo de Android, las funciones y propiedades de extensión permiten agregar nueva funcionalidad a clases existentes sin heredar o usar decoradores. Esto es especialmente útil al trabajar con clases estándar del SDK.
Propiedades de extensión son propiedades que podemos agregar a clases existentes. No almacenan estado, su valor calculado se determina mediante un getter.
Ejemplos de uso de propiedades de extensión en Android:
-
Simplificación del acceso a LayoutInflater:
// Agregar una propiedad de extensión para acceder a LayoutInflater val Context.layoutInflater: LayoutInflater get() = LayoutInflater.from(this)Ahora se puede usar
context.layoutInflateren lugar deLayoutInflater.from(context). -
Propiedad corta para ocultar View:
// Propiedad de extensión para establecer la visibilidad de View en GONE var View.isVisibleGone: Boolean get() = visibility == View.VISIBLE // Getter para verificar el estado actual set(value) { // Setter para establecer el estado visibility = if (value) View.VISIBLE else View.GONE }Ahora se puede usar
view.isVisibleGone = falsepara ocultar View. -
Obtener tamaño de pantalla en DP:
// Propiedad de extensión para obtener el ancho de pantalla en DP val Context.screenWidthInDp: Int get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()Ejemplo de uso:
context.screenWidthInDp. -
Acceso a SharedPreferences:
// Propiedad de extensión para obtener SharedPreferences por nombre fun Context.sharedPreferences(name: String): SharedPreferences = getSharedPreferences(name, Context.MODE_PRIVATE)Aunque es una función, a menudo se usa como propiedad para un acceso conveniente:
context.sharedPreferences("my_prefs").
Puntos importantes sobre propiedades de extensión:
- No pueden tener campos de respaldo (variables que almacenan valores).
- Deben definirse solo con un getter (solo lectura) o con getter y setter (lectura-escritura).
- Se compilan como métodos estáticos, por lo que se llaman a través de la clase contenedora.
En esencia, en Android, se puede agregar cualquier propiedad calculada que lógicamente pertenezca a una clase existente y facilite su uso, evitando crear funciones auxiliares o clases envolventes.