Sobes.tech
Middle

Android-də genişləndirmə kimi hansı xüsusiyyətləri əlavə edə bilərsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

Android inkişafında, extension funksiyaları və properties mövcud siniflərə yeni funksionallıq əlavə etməyə imkan verir, irsiyyət və ya dekoratorlardan istifadə etmədən. Bu, SDK-nın standart sinifləri ilə işləyərkən xüsusilə faydalıdır.

Extension Properties mövcud siniflərə əlavə edə biləcəyimiz xüsusiyyətlərdir. Onlar vəziyyəti yadda saxlamır, onların hesablanan dəyəri getter vasitəsilə müəyyən edilir.

Androidda extension properties istifadə nümunələri:

  1. LayoutInflater-ə girişin sadələşdirilməsi:

    // LayoutInflater-ə giriş üçün extension property əlavə etmək
    val Context.layoutInflater: LayoutInflater  
        get() = LayoutInflater.from(this)  
    

    İndi context.layoutInflater istifadə edə bilərsiniz, LayoutInflater.from(context) yerinə.

  2. View-i gizlətmək üçün qısa property:

    // View-in görünürlüğünü GONE etmək üçün extension property
    var View.isVisibleGone: Boolean  
        get() = visibility == View.VISIBLE // Mövcud vəziyyəti yoxlamaq üçün getter  
        set(value) { // Vəziyyəti təyin etmək üçün setter  
            visibility = if (value) View.VISIBLE else View.GONE  
        }
    

    İndi view.isVisibleGone = false istifadə edərək View-i gizlədə bilərsiniz.

  3. Ekran ölçüsünü DP-də almaq:

    // Ekran genişliyini DP-də almaq üçün extension property
    val Context.screenWidthInDp: Int  
        get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()  
    

    Nümunə istifadə: context.screenWidthInDp.

  4. SharedPreferences-ə giriş:

    // Ad ilə SharedPreferences almaq üçün extension property
    fun Context.sharedPreferences(name: String): SharedPreferences =  
        getSharedPreferences(name, Context.MODE_PRIVATE)  
    

    Bu funksiya olsa da, çox vaxt rahat giriş üçün property kimi istifadə olunur: context.sharedPreferences("my_prefs").

Extension properties haqqında vacib nöqtələr:

  • Onlar backing fields (dəyəri saxlayan dəyişənlər) ola bilməz.
  • Yalnız oxuma üçün getter və ya oxuma-yazma üçün getter və setter ilə təyin edilməlidir.
  • Statik metodlar kimi tərtib olunur, ona görə də çağırışlar sahibi sinif vasitəsilə edilir.

Əsasən, Androidda, mövcud sinfə məntiqi olaraq aid olan və istifadəsini asanlaşdıran hər hansı hesablanan property əlavə etmək mümkündür, bu da köməkçi funksiyalar və ya qapalı sinflər yaratmadan istifadəni sadələşdirir.