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:
-
LayoutInflater erişimini basitleştirme:
// LayoutInflater erişimi için extension property ekleme val Context.layoutInflater: LayoutInflater get() = LayoutInflater.from(this)Artık
context.layoutInflaterkullanabiliriz,LayoutInflater.from(context)yerine. -
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 = falsekullanarak View gizleyebilirsiniz. -
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. -
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.