Sobes.tech
Middle

Android'de uzantı olarak hangi özellikleri ekleyebilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android geliştirmede, extension functions ve properties, mevcut sınıflara yeni işlevsellikler eklemeyi sağlar, kalıtım veya dekoratör kullanmadan. Bu, SDK'nın standart sınıflarıyla çalışırken özellikle faydalıdır.

Extension Properties, mevcut sınıflara ekleyebileceğimiz özelliklerdir. Durumu saklamazlar, hesaplanan değeri bir getter ile belirlenir.

Android'de extension properties kullanımı örnekleri:

  1. LayoutInflater erişimini basitleştirme:

    // LayoutInflater erişimi için extension property ekleme
    val Context.layoutInflater: LayoutInflater  
        get() = LayoutInflater.from(this)  
    

    Artık context.layoutInflater kullanabiliriz, LayoutInflater.from(context) yerine.

  2. View gizleme için kısa özellik:

    // View'in görünürlüğünü GONE yapacak extension property
    var View.isVisibleGone: Boolean  
        get() = visibility == View.VISIBLE // Mevcut durumu kontrol eden getter  
        set(value) { // Durumu ayarlayan setter  
            visibility = if (value) View.VISIBLE else View.GONE  
        }
    

    Artık view.isVisibleGone = false kullanarak View gizleyebilirsiniz.

  3. Ekran boyutunu DP cinsinden alma:

    // Ekran genişliğini DP cinsinden alan extension property
    val Context.screenWidthInDp: Int  
        get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()  
    

    Kullanım örneği: context.screenWidthInDp.

  4. SharedPreferences erişimi:

    // Belirli bir isimle SharedPreferences alan extension property
    fun Context.sharedPreferences(name: String): SharedPreferences =  
        getSharedPreferences(name, Context.MODE_PRIVATE)  
    

    Bu fonksiyon olmasına rağmen, kullanımı pratiklik için genellikle property olarak kullanılır: context.sharedPreferences("my_prefs").

Extension properties ile ilgili önemli noktalar:

  • Backing fields (değer saklayan değişkenler) kullanamazlar.
  • Sadece getter (yalnızca okunabilir) veya getter ve setter (okuma-yazma) ile tanımlanmalıdırlar.
  • Statik metodlar olarak derlenirler, bu nedenle sınıf üzerinden çağrılırlar.

Özetle, Android'de, mevcut bir sınıfa mantıksal olarak ait olan ve kullanımını kolaylaştıran herhangi bir hesaplanan özellik ekleyebilirsiniz, böylece yardımcı fonksiyonlar veya sarmalayıcı sınıflar oluşturmadan kullanımı basitleştirebilirsiniz.