Welke eigenschappen kunt u als extensie toevoegen in Android?
sobes.tech AI
Antwoord van AI
In Android-ontwikkeling stellen extension functions en properties je in staat om nieuwe functionaliteit toe te voegen aan bestaande klassen zonder er erfenis van te nemen of decorateurs te gebruiken. Dit is vooral handig bij het werken met standaardklassen van de SDK.
Extension properties zijn eigenschappen die we kunnen toevoegen aan bestaande klassen. Ze slaan geen toestand op, hun berekende waarde wordt bepaald door een getter.
Voorbeelden van het gebruik van extension properties in Android:
-
Vereenvoudiging van toegang tot LayoutInflater:
// Toevoegen van een extension property voor toegang tot LayoutInflater val Context.layoutInflater: LayoutInflater get() = LayoutInflater.from(this)Nu kan je
context.layoutInflatergebruiken in plaats vanLayoutInflater.from(context). -
Korte property voor het verbergen van View:
// Extension property om de zichtbaarheid van View op GONE te zetten var View.isVisibleGone: Boolean get() = visibility == View.VISIBLE // Getter om de huidige status te controleren set(value) { // Setter om de status in te stellen visibility = if (value) View.VISIBLE else View.GONE }Nu kan je
view.isVisibleGone = falsegebruiken om View te verbergen. -
Het verkrijgen van schermgrootte in DP:
// Extension property om de schermbreedte in DP te krijgen val Context.screenWidthInDp: Int get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()Voorbeeldgebruik:
context.screenWidthInDp. -
Toegang tot SharedPreferences:
// Extension property om SharedPreferences op naam te krijgen fun Context.sharedPreferences(name: String): SharedPreferences = getSharedPreferences(name, Context.MODE_PRIVATE)Hoewel dit een functie is, wordt het vaak gebruikt als property voor handig gebruik:
context.sharedPreferences("my_prefs").
Belangrijke punten over extension properties:
- Ze kunnen geen backing fields (variabelen die de waarde opslaan) hebben.
- Ze moeten worden gedefinieerd met alleen een getter (alleen-lezen) of met getter en setter (lezen-schrijven).
- Ze worden gecompileerd als statische methoden, dus worden ze aangeroepen via de eigenaarklasse.
Kortom, in Android kun je elke berekende property toevoegen die logisch behoort tot een bestaande klasse en het gebruik ervan vereenvoudigt, zonder hulpfuncties of wrapper-klassen te maken.