Sobes.tech
Middle

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:

  1. 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.layoutInflater használható a LayoutInflater.from(context) helyett.

  2. 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 = false használható a View elrejtésére.

  3. 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.

  4. 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.