Aké vlastnosti môžete pridať ako rozšírenie v Android?
sobes.tech AI
Odpoveď od AI
V Android vývoji rozšírenia (extension functions a properties) umožňujú pridávať novú funkcionalitu existujúcim triedam bez ich dedičnosti alebo použitia dekorátorov. To je obzvlášť užitočné pri práci so štandardnými triedami SDK.
Rozšírenia vlastností (Extension Properties) sú vlastnosti, ktoré môžeme pridávať k existujúcim triedam. Neuchovávajú stav, ich vypočítaná hodnota je určená getterom.
Príklady použitia rozšírení vlastností v Android:
-
Zjednodušenie prístupu k LayoutInflater:
// Pridanie rozšírenia vlastnosti pre prístup k LayoutInflater val Context.layoutInflater: LayoutInflater get() = LayoutInflater.from(this)Teraz môžete použiť
context.layoutInflaternamiestoLayoutInflater.from(context). -
Krátka vlastnosť na skrytie View:
// Rozšírenie vlastnosti na nastavenie viditeľnosti View na GONE var View.isVisibleGone: Boolean get() = visibility == View.VISIBLE // Getter na kontrolu aktuálneho stavu set(value) { // Setter na nastavenie stavu visibility = if (value) View.VISIBLE else View.GONE }Teraz môžete použiť
view.isVisibleGone = falsena skrytie View. -
Získanie veľkosti obrazovky v DP:
// Rozšírenie vlastnosti na získanie šírky obrazovky v DP val Context.screenWidthInDp: Int get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()Príklad použitia:
context.screenWidthInDp. -
Prístup k SharedPreferences:
// Rozšírenie vlastnosti na získanie SharedPreferences podľa mena fun Context.sharedPreferences(name: String): SharedPreferences = getSharedPreferences(name, Context.MODE_PRIVATE)Hoci je to funkcia, často sa používa ako vlastnosť pre pohodlný prístup:
context.sharedPreferences("my_prefs").
Dôležité body o rozšíreniach vlastností:
- Nemôžu mať backing fields (premenné, ktoré uchovávajú hodnotu).
- Musia byť definované buď len s getterom (len na čítanie), alebo s getterom a setterom (na čítanie a zápis).
- Kompilujú sa ako statické metódy, preto ich volanie prebieha cez triedu-vlastníka.
V podstate, ako rozšírenie v Android môžete pridať akúkoľvek vypočítateľnú vlastnosť, ktorá logicky patrí k existujúcemu triedu a zjednodušuje jeho použitie, vyhýbajúc sa tvorbe pomocných funkcií alebo obalových tried.