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:
-
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.layoutInflatervietojeLayoutInflater.from(context). -
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 = falsepaslėpti View. -
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. -
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.