Jetpack Compose: Android'de bildirimsel arayüz araç takımı
Jetpack Compose'un Android'de Kotlin ile bildirimsel arayüz yazmayı nasıl sağladığını, durum yönetimini ve XML'den farkını örnekle öğrenin.
Jetpack Compose nedir?
Jetpack Compose, Android uygulamalarında kullanıcı arayüzünü Kotlin diliyle ve bildirimsel (declarative) bir yaklaşımla oluşturmaya yarayan, Google tarafından geliştirilen modern araç takımıdır. Arayüzü XML dosyalarında tanımlayıp koddan bağlamak yerine, ekranın nasıl görünmesi gerektiğini doğrudan Kotlin fonksiyonlarıyla tarif edersiniz.
Bildirimsel yaklaşımın özü şudur: "Ekranı adım adım nasıl değiştireceğim" diye düşünmezsiniz; "veri şu durumdayken ekran şöyle görünmeli" dersiniz. Veri değişince araç takımı gerekli kısmı yeniden çizer.
Temel yapı taşları
- Composable fonksiyon: Arayüzün bir parçasını tanımlayan, @Composable ile işaretlenmiş fonksiyondur. Bir düğme, bir kart ya da bütün bir ekran olabilir. Küçük fonksiyonlar birleştirilerek karmaşık ekranlar kurulur.
- Düzen bileşenleri: Column, Row ve Box gibi bileşenler öğeleri dikey, yatay ya da üst üste yerleştirir.
- Modifier: Boyut, kenar boşluğu, arka plan, tıklanabilirlik gibi özellikleri zincirleme eklemeye yarar.
- Listeler: LazyColumn gibi bileşenler yalnızca ekranda görünen öğeleri oluşturarak uzun listeleri verimli kılar.
- Tema ve tasarım sistemi: Renk, tipografi ve şekil değerleri merkezi bir temadan gelir; Material tasarım bileşenleri hazır sunulur.
Durum ve yeniden çizim
Compose'un kalbi durum (state) yönetimidir. Bir değer, remember ve mutableStateOf gibi yapılarla durum olarak tanımlandığında, o değere bakan composable fonksiyonlar değer değiştiğinde otomatik olarak yeniden çalıştırılır. Bu işleme yeniden oluşturma (recomposition) denir.
Örneğin bir sayaç ekranında düğmeye basıldığında sayı değişkenini artırırsınız; metin bileşenini elle güncellemeniz gerekmez. Ekranın ihtiyaç duyduğu durumu bir ViewModel gibi bir katmanda tutmak ve arayüze yalnızca gösterilecek değeri ile olayları aktarmak, test edilebilir ve düzenli bir yapı sağlar. Bu düzene genellikle durumun yukarı taşınması (state hoisting) denir.
XML ve görünüm sisteminden farkı
Geleneksel Android arayüzü XML düzen dosyaları ve View nesneleriyle kurulurdu; arayüz ile mantık ayrı yerlerde yaşar, görünümü güncellemek için kod içinde nesneye ulaşıp özelliğini elle değiştirmek gerekirdi.
Compose'ta arayüz ve mantık aynı dilde, aynı yerde bulunur; tekrar eden parçalar fonksiyona çevrilerek paylaşılır; koddaki önizleme (preview) özelliği tasarımı çalıştırmadan görmenizi sağlar. Mevcut bir uygulamayı bir anda yeniden yazmak gerekmez: Compose ve eski görünüm sistemi aynı ekranda birlikte kullanılabilir, böylece geçiş kademeli yapılır.
Örnek senaryo
Örneğin bir sipariş listesi ekranı kurulacak. Sipariş bilgisini gösteren küçük bir kart composable'ı yazılır. Liste ekranı bu kartı LazyColumn içinde, sipariş verisi üzerinden döngüyle çağırır. ViewModel siparişleri bir durum akışı olarak sunar; veri sunucudan yenilendiğinde liste kendiliğinden güncellenir. Karta tıklanınca navigasyon bileşeni sipariş detayı ekranına geçirir. Aynı kart bileşeni başka ekranlarda da yeniden kullanılabilir.
Bu akışta ekranlar arası geçiş, animasyon ve karanlık tema desteği de aynı bildirimsel mantıkla ele alınır.
Dikkat edilecek noktalar
Gereksiz yeniden oluşturma, performans sorunlarının en sık kaynağıdır; durumun doğru yerde tutulması ve kararlı veri yapılarının kullanılması önemlidir. Büyük bir ekranı tek composable içine yığmak okunabilirliği ve yeniden kullanımı bozar. Ayrıca erişilebilirlik (ekran okuyucu etiketleri, dokunma alanı boyutları) ve test (arayüz testleri) baştan düşünülmelidir.
Compose yalnızca Android arayüzü için bir araç takımıdır; iş mantığı, ağ ve veri katmanı mimarisi ayrıca tasarlanmalıdır.
Mindset programlarında bu konu
Mindset kataloğundaki Jetpack Compose ile Modern Android Arayüzü eğitiminin modülleri Compose temelleri ve düzen sistemi, durum yönetimi ve veri akışı, tasarım sistemi ve bileşen kütüphanesi, liste, animasyon ve etkileşim, navigasyon ve uygulama yapısı ile performans, erişilebilirlik ve test konularını kapsar.
İlgili Mindset programı
Jetpack Compose ile Modern Android Arayüzü
Sık sorulan sorular
Jetpack Compose öğrenmek için Kotlin bilmek gerekir mi?
Evet. Compose tamamen Kotlin ile yazılır ve dilin lambda, uzantı fonksiyonları ve eşzamansız çalışma özelliklerinden yoğun biçimde yararlanır. Temel Kotlin ve Android uygulama yapısı bilgisi, Compose öğrenimini belirgin biçimde kolaylaştırır.
Compose, XML'in yerini tamamen aldı mı?
Yeni projelerde Compose yaygın tercih edilir ancak XML tabanlı görünüm sistemi hâlâ çok sayıda mevcut uygulamada kullanılır. Bu yaklaşımlar aynı uygulama içinde birlikte çalışabildiği için çoğu ekip geçişi ekran ekran, kademeli yapar.
Composable fonksiyon nedir?
Arayüzün bir parçasını tarif eden, @Composable ile işaretlenmiş Kotlin fonksiyonudur. Girdi olarak veri ve olay işleyicileri alır, çıktı olarak ekrana bir arayüz parçası ekler. Küçük composable'lar birleştirilerek bütün ekranlar oluşturulur.
Compose yalnızca telefonlar için mi?
Hayır. Aynı bildirimsel yaklaşım tablet, katlanabilir cihaz ve giyilebilir cihaz arayüzleri için de kullanılır. Farklı ekran boyutlarına uyum için uyarlanabilir düzen yaklaşımları geliştirilir; bunlar uygulamanın hedeflediği cihaz türüne göre seçilir.