Sobes.tech
Middle

Ce proprietăți puteți adăuga ca extensie în Android?

sobes.tech AI

Răspuns de la AI

În dezvoltarea Android, funcțiile și proprietățile de extensie permit adăugarea de funcționalități noi claselor existente fără a le moșteni sau a folosi decoratori. Acest lucru este deosebit de util atunci când lucrați cu clasele standard ale SDK-ului.

Proprietățile de extensie sunt proprietăți pe care le putem adăuga claselor existente. Ele nu stochează stare, valoarea lor calculată fiind determinată de un getter.

Exemple de utilizare a proprietăților de extensie în Android:

  1. Simplificarea accesului la LayoutInflater:

    // Adăugarea unei proprietăți de extensie pentru accesul la LayoutInflater
    val Context.layoutInflater: LayoutInflater  
        get() = LayoutInflater.from(this)  
    

    Acum puteți folosi context.layoutInflater în loc de LayoutInflater.from(context).

  2. Proprietate scurtă pentru ascunderea View:

    // Proprietate de extensie pentru setarea vizibilității View la GONE
    var View.isVisibleGone: Boolean  
        get() = visibility == View.VISIBLE // Getter pentru verificarea stării curente  
        set(value) { // Setter pentru setarea stării  
            visibility = if (value) View.VISIBLE else View.GONE  
        }
    

    Acum puteți folosi view.isVisibleGone = false pentru a ascunde View.

  3. Obținerea dimensiunii ecranului în DP:

    // Proprietate de extensie pentru obținerea lățimii ecranului în DP
    val Context.screenWidthInDp: Int  
        get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()  
    

    Exemplu de utilizare: context.screenWidthInDp.

  4. Accesul la SharedPreferences:

    // Proprietate de extensie pentru obținerea SharedPreferences după nume
    fun Context.sharedPreferences(name: String): SharedPreferences =  
        getSharedPreferences(name, Context.MODE_PRIVATE)  
    

    Deși este o funcție, este adesea utilizată ca proprietate pentru acces convenabil: context.sharedPreferences("my_prefs").

Puncte importante despre proprietățile de extensie:

  • Nu pot avea câmpuri de suport (variabile care stochează valoarea).
  • Trebuie definite fie doar cu un getter (doar citire), fie cu getter și setter (citire-scriere).
  • Sunt compilate ca metode statice, deci sunt apelate prin clasa deținătoare.

În esență, în Android, puteți adăuga orice proprietate calculată care aparține logic unei clase existente și facilitează utilizarea acesteia, evitând crearea de funcții auxiliare sau clase de înveliș.