Sobes.tech
Middle

Kuras īpašības jūs varat pievienot kā paplašinājumu Android?

sobes.tech AI

Atbilde no AI

Android izstrādē paplašinājuma funkcijas (extension functions) un īpašības (properties) ļauj pievienot jaunu funkcionalitāti esošajām klasēm bez mantošanas vai dekoratoru izmantošanas. Tas ir īpaši noderīgi, strādājot ar SDK standarta klasēm.

Paplašinājuma īpašības (Extension Properties) ir īpašības, kuras mēs varam pievienot esošajām klasēm. Tās nesaglabā stāvokli, to aprēķināmo vērtību nosaka ar gētteri.

Piemēri Android izmantošanai ar paplašinājuma īpašībām:

  1. Vienkāršot piekļuvi LayoutInflater:

    // Pievienot paplašinājuma īpašību piekļuvei pie LayoutInflater
    val Context.layoutInflater: LayoutInflater  
        get() = LayoutInflater.from(this)  
    

    Tagad var izmantot context.layoutInflater vietā LayoutInflater.from(context).

  2. Īsa īpašība View paslēpšanai:

    // Paplašinājuma īpašība View redzamības iestatīšanai uz GONE
    var View.isVisibleGone: Boolean  
        get() = visibility == View.VISIBLE // Gētters pašreizējā stāvokļa pārbaude  
        set(value) { // Sēters stāvokļa iestatīšanai  
            visibility = if (value) View.VISIBLE else View.GONE  
        }
    

    Tagad var izmantot view.isVisibleGone = false lai paslēptu View.

  3. Ekrāna izmēra iegūšana DP:

    // Paplašinājuma īpašība ekrāna platuma iegūšanai DP
    val Context.screenWidthInDp: Int  
        get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()  
    

    Piemērs: context.screenWidthInDp.

  4. Pieeja SharedPreferences:

    // Paplašinājuma īpašība piekļuvei SharedPreferences pēc nosaukuma
    fun Context.sharedPreferences(name: String): SharedPreferences =  
        getSharedPreferences(name, Context.MODE_PRIVATE)  
    

    Lai gan tā ir funkcija, to bieži izmanto kā īpašību ērtākai piekļuvei: context.sharedPreferences("my_prefs").

Svarīgi punkti par paplašinājuma īpašībām:

  • Tās nevar saturēt atbalsta laukus (backing fields).
  • Tās jādefinē vai tikai ar gētteri (lasīšanai), vai ar gētteri un sētteri (lasīšanai un rakstīšanai).
  • Tās tiek kompilētas kā statiskas metodes, tāpēc tās tiek izsauktas caur klases īpašnieku.

Kopumā, Androidā ar paplašinājuma palīdzību var pievienot jebkuru aprēķināmu īpašību, kas loģiski attiecas uz esošo klasi un atvieglo tās lietošanu, izvairoties no palīgfunkcijām vai apvalka klasēm.