Sobes.tech
Middle

Androidda kengaytma sifatida qanday xususiyatlarni qo'shishingiz mumkin?

sobes.tech AI

AIdan javob

Android dasturlashda kengaytma funksiyalari (extension functions va properties) mavjud sinflarga yangi funksionallik qo'shish imkonini beradi, meros olish yoki dekoratorlardan foydalanmasdan. Bu SDK ning standart sinflari bilan ishlashda ayniqsa foydalidir.

Kengaytma properties mavjud sinflarga qo'shishimiz mumkin bo'lgan xususiyatlar. Ular holatni saqlamaydi, ularning hisoblangan qiymati getter yordamida aniqlanadi.

Androidda kengaytma properties dan foydalanish misollari:

  1. LayoutInflater ga kirishni soddalashtirish:

    // LayoutInflater ga kirishni ta'minlovchi kengaytma property qo'shish
    val Context.layoutInflater: LayoutInflater  
        get() = LayoutInflater.from(this)  
    

    Endi context.layoutInflater ni LayoutInflater.from(context) o'rniga ishlatish mumkin.

  2. View ni yashirish uchun qisqa property:

    // View ning ko'rinishini GONE ga o'rnatish uchun kengaytma property
    var View.isVisibleGone: Boolean  
        get() = visibility == View.VISIBLE // Hozirgi holatni tekshirish uchun getter  
        set(value) { // Holatni o'rnatish uchun setter  
            visibility = if (value) View.VISIBLE else View.GONE  
        }
    

    Endi view.isVisibleGone = false ni ishlatib View ni yashirish mumkin.

  3. Ekran o'lchamini DP da olish:

    // Ekran kengligini DP da olish uchun kengaytma property
    val Context.screenWidthInDp: Int  
        get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()  
    

    Misol uchun: context.screenWidthInDp.

  4. SharedPreferences ga kirish:

    // Nom bilan SharedPreferences ni olish uchun kengaytma property
    fun Context.sharedPreferences(name: String): SharedPreferences =  
        getSharedPreferences(name, Context.MODE_PRIVATE)  
    

    Bu funksiya bo'lsa-da, uni qulay kirish uchun ko'pincha property sifatida ishlatishadi: context.sharedPreferences("my_prefs").

Kengaytma properties haqida muhim nuqtalar:

  • Ular backing fields (qiymat saqlovchi o'zgaruvchilar) bo'lishi mumkin emas.
  • Faqatgina getter (faqat o'qish) yoki getter va setter (o'qish-yazish) bilan aniqlanishi kerak.
  • Ular statik metodlar sifatida kompilyatsiya qilinadi, shuning uchun ularni chaqirish klass egasi orqali amalga oshiriladi.

Asosan, Androidda, mavjud sinfga mantiqan tegishli bo'lgan va uning foydalanishini soddalashtiradigan har qanday hisoblangan property qo'shish mumkin, bu yordamchi funksiyalar yoki qobiq sinflar yaratmasdan.