Sobes.tech
Middle

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:

  1. 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.layoutInflater gebruiken in plaats van LayoutInflater.from(context).

  2. 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 = false gebruiken om View te verbergen.

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

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