Sobes.tech
Middle

Kokias savybes galite pridėti kaip plėtinį Android?

sobes.tech AI

Atsakymas iš AI

Android programavimo srityje išplėtimo funkcijos (extension functions) ir savybės (properties) leidžia pridėti naują funkcionalumą prie esamų klasių be paveldėjimo ar dekoratorių naudojimo. Tai ypač naudinga dirbant su SDK standartinėmis klasėmis.

Išplėtimo savybės (Extension Properties) yra savybės, kurias galime pridėti prie esamų klasių. Jos ne saugo būsenos, jų skaičiuojama reikšmė nustatoma pagal getterį.

Pavyzdžiai, kaip naudoti išplėtimo savybes Android:

  1. Supaprastinti prieigą prie LayoutInflater:

    // Pridėti išplėtimo savybę prie LayoutInflater prieigos
    val Context.layoutInflater: LayoutInflater  
        get() = LayoutInflater.from(this)  
    

    Dabar galima naudoti context.layoutInflater vietoje LayoutInflater.from(context).

  2. Trumpa savybė paslėpti View:

    // Išplėtimo savybė nustatyti View matomumą į GONE
    var View.isVisibleGone: Boolean  
        get() = visibility == View.VISIBLE // Geteris patikrinimui  
        set(value) { // Seteris nustatymui  
            visibility = if (value) View.VISIBLE else View.GONE  
        }
    

    Dabar galima naudoti view.isVisibleGone = false paslėpti View.

  3. Gauti ekrano dydį DP:

    // Išplėtimo savybė gauti ekrano plotį DP
    val Context.screenWidthInDp: Int  
        get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()  
    

    Pavyzdys: context.screenWidthInDp.

  4. Prieiga prie SharedPreferences:

    // Išplėtimo savybė gauti SharedPreferences pagal pavadinimą
    fun Context.sharedPreferences(name: String): SharedPreferences =  
        getSharedPreferences(name, Context.MODE_PRIVATE)  
    

    Nors tai funkcija, dažnai naudojama kaip savybė patogumui: context.sharedPreferences("my_prefs").

Svarbūs momentai apie išplėtimo savybes:

  • Jos negali turėti backing fields.
  • Jos turi būti apibrėžtos arba tik su getteriu (skaitomai), arba su getteriu ir setteriu (skaitomai ir rašomai).
  • Jos kompiliuojasi kaip statinės metodai, todėl jų iškvietimas vyksta per klasės savininką.

Apskritai, Android galima pridėti bet kurią skaičiuojamą savybę, kuri logiškai priklauso nuo esamos klasės ir palengvina jos naudojimą, išvengiant papildomų funkcijų ar apvalkinių klasių kūrimo.