Xamarin İle Platform Savaşı ⚔️
Selam!
Merhaba Xamarin! Başlıklı içeriği okuduktan sonra akıllarda tek bir soru olabilir. Zaman zaman platforma özgü kod geliştirmek isteyebiliriz. Nasıl? 🤗 Şimdi biz bir önceki yazımızda bir ifade de bulunduk.
Xamarin.Forms diğer projelere referans verildiğinden sadece Xamarin.Forms yazacağız.
Ben Android, iOS, UWP de farklı tasarımlar ya da farklı işleyiş biçimine sahip kod geliştirmek istiyorum, efendime söyleyeyim iOS da kırmızı buton, Androidde mavi buton istiyorum, iOSda kırmızı butona tıklayan Apple markete gitsin. Android de ise aynı butona tıklayan Google markete gitsin gibi bir düşünceye sahipsen otur konuşalım süper bir noktaya değindin ama öncesinde konuşmamız gereken konular var.😉
Tabii ki bu konuları anlatırken burada proje geliştirmek gibi bir niyetim yok. İlerleyen evrelerde Github projesini link olarak bırakabilirim. 🚀 Sonuç olarak amacım sadece Xamarin’i tanıtabilmek ve fikir sahibi oluşturabilmektir.
XAML & CODE BEHIND
Ön yüzde (xaml) yaptığımız her geliştirmeyi birebir arka tarafta (code behind) yapabiliriz. Örneğin xaml üzerinde bir etiket(label) oluşturduğumuzu varsayalım. Aynı etiketi(label) 🏷️ code behind sayfası üzerinden oluşturup, sayfa da gözükmesi adına bağlı bulunduğu ContentPage in content özelliğine, kurucu(constructor) içerisinde tanımlamalıyız.
📃 ContentPage: Bir sayfadır ve sadece bir tane view gösterebilir.
Content sadece bir view a sahip olabilmektedir. Görseldeki gibi bir content içeriğine sadece bir adet label tanımlarsak, o view üzerine başka bir eleman ekleyemeyiz. Çünkü, label da aslında view türünden türetilmiştir. Label, slider, button vb. hepsi view türünden türetilmiş. Eğer content içeriğine label ve slider tanımlaması yaparsanız bunlardan sadece bir tanesini ön yüzde gösterebilirsiniz.
ALO LAYOUT HATTI 📞
Sol tarafta da görüldüğü üzere biz zaten sayfa üzerinde birden fazla atama yaparsak, Xaml sayfasından bize bir uyarı gelmektedir. Bu durumda ne yapacağız?
Layoutdan türetilmiş bir nesne oluşturmamız gerekmektedir. Content özelliğine bir layout tanımı yapıp, view özelliklerini(button, label, slider, radio button) layout a aktarmamız gerekmektedir.
.
.
LAYOUT (Fikir sahibi olalım)
Xamarin.Forms’daki Layout ve Layout<T> sınıfları, görünümler ve diğer düzenler için kapsayıcı görevi gören, özelleştirilmiş görünüm alt türleridir. Layout sınıfının kendisi view’dan türemiştir. Genellikle Xamarin.Forms uygulamalarındaki alt öğelerin konumunu ve boyutunu ayarlama mantığını içerir.
Stack Layout: Öğeleri orientation özelliğine göre yatay ya da dikey olarak konumlandır.
Grid: Öğeleri satır ve sütunlardan oluşan bir ızgarada konumlandırır.
Absolute Layout: Alt öğeleri, üst öğelerine göre belirli konumlarda konumlandırır.
Relative Layout: Öğeleri kendisine ya da belirlediğimiz öğelere göre konumlandırır.
Flex Layout: Alt öğelerin birçok hizalama ve yönlendirme seçeneğiyle yığınlanmasına veya sarılmasına olanak tanıyan altı bağlanabilir özellik ve beş bağlı bağlanabilir özellik tanımlar.
PLATFORM FARKLILIKLARI 💥
Son zamanların çentikli telefonları bir de çentiksiz telefonları. Yani gün olurda iOS’da sayfanın arka plan rengini sarı, android’de mavi, UWP’de de kırmızı istiyorum ben dersen diye bu konuya değinmek istedim. İşin özü platforma göre farklılık yaratmak için nasıl davranmamız gerektiği konusunda Xamarin bize OnPlatform ile yardımcı olmaktadır. 💻
.NET MAUI İLE HERŞEY DAHA GÜZEL OLACAK!
Görüşmek üzere. 👍