Milyen tulajdonságokat adhat hozzá kiterjesztésként Androidban?
sobes.tech MI
Válasz az MI-től
Android fejlesztés során az extension functions és properties lehetővé teszik, hogy új funkcionalitást adjunk meglévő osztályokhoz öröklés vagy dekorátorok használata nélkül. Ez különösen hasznos az SDK szabványos osztályaival való munkánál.
Extension Properties olyan tulajdonságok, amelyeket meglévő osztályokhoz adhatunk hozzá. Nem tárolnak állapotot, értékük a getter által számított.
Példák az extension properties használatára Androidban:
-
A LayoutInflater elérésének egyszerűsítése:
// Extension property hozzáadása a LayoutInflater eléréséhez val Context.layoutInflater: LayoutInflater get() = LayoutInflater.from(this)Mostantól a
context.layoutInflaterhasználható aLayoutInflater.from(context)helyett. -
Rövid tulajdonság a View elrejtéséhez:
// Extension property a View láthatóságának GONE-ra állításához var View.isVisibleGone: Boolean get() = visibility == View.VISIBLE // Aktuális állapot ellenőrzése set(value) { // Állapot beállítása visibility = if (value) View.VISIBLE else View.GONE }Mostantól a
view.isVisibleGone = falsehasználható a View elrejtésére. -
A képernyő méretének lekérése DP-ben:
// Extension property a képernyő szélességének lekéréséhez DP-ben val Context.screenWidthInDp: Int get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()Példa a használatra:
context.screenWidthInDp. -
SharedPreferences elérése:
// Extension property a SharedPreferences eléréséhez név szerint fun Context.sharedPreferences(name: String): SharedPreferences = getSharedPreferences(name, Context.MODE_PRIVATE)Bár ez egy függvény, gyakran használják kényelmes hozzáférésként:
context.sharedPreferences("my_prefs").
Fontos pontok az extension properties-ről:
- Nem rendelkezhetnek backing fields-sel (értéket tároló változókkal).
- Csak getterrel (csak olvasható) vagy getterrel és setterrel (olvasás-írás) kell legyenek.
- Statikus metódusokként fordulnak le, így a tulajdonos osztályon keresztül hívják őket.
Lényegében Androidban bármilyen számított tulajdonság hozzáadható, amely logikailag egy meglévő osztályhoz tartozik, és megkönnyíti annak használatát, elkerülve a segédfüggvények vagy burkoló osztályok létrehozását.