Merhaba,
Xamarin kullanarak geliştirdiğimiz mobil uygulamalarımızda her zaman ihtiyaç duyduğumuz "cihaz özelliklerine ulaşmak" kısmı için bir makale serisi başlatmaya karar verdim. Bu seride ilk önce ScreenSize gibi basit bir konuyu ele alarak başlayacağım. Daha sonra cihaz üzerinde kullanmak isteyebileceğimiz ne kadar özellik varsa bu projeye ekleyerek devam edeceğim.
Sizlerinde tahmin edeceği gibi bu gibi cihaz spesifik işlemlerin hepsi DependencyService ile gerçekleştiriliyor. Yani bu makale serimizin hemen hemen her makalesinde ayrı zorluklarda DependencyService işlemleri gerçekleştireceğiz.
Tabii ki ilk olarak projemizi açıyoruz. (PCL proje tipini tercih ettim, sizler isterseniz Shared devam edebilirsiniz.)
Projemizi açtıktan sonra yapmamız gereken en önemli durum Droid, iOS veya WinPhone projelerinden herhangi bir tanesi çalıştırıldığında Portable katmandaki ortak kodlarımdan çalışan projenin, hangi cihazda çalışıyorsa (bu iPhone4 veya HTC One olabilir.) width ve height özelliklerini almak.
Amacımız çok belli bu yüzden gidip Droid, iOS ve WinPhone katmanları için tek tek kod yazalım..
Portalble katmanından çıkmadan önce Xamarin.Forms DependencyService kullanacağımız için IDeviceHelper adında bir interface ve bu interface içerisinde geriye Width ve Height propertyleri içeren bir DeviceHelper class'ı döndürdüğünü inceleyelim.
Droid Ekran Özellikleri Nasıl Alınır?
Droid tarafta ekran özelliklerini bize veren hazır bir class mevuct. (DisplayMetrics) Bu yardımcı class'ı kullanarak zahmetsiz bir şekilde width ve height özelliklerini elde edeceğiz.
Fakat mobil dünyada olduğumuz için bize pixel değil dp değeri lazım. Bunun için kodumuzda biraz refactor işlemi gerçekleştireceğiz.
DisplayMetrics.Density değişkeninden yardım alacağız. Elde ettiğimiz pixel değerini çalışan cihaz'ın density değerine bölerek dp değerini elde ediyoruz.
Droid ortam için hemen test edelim..
DependencyService için assembly register kısmını unutmuyoruz.
[assembly: Xamarin.Forms.Dependency(typeof(ScreenSizeDependency))]
DependencyService.Get<IDeviceHelper> ile IDeviceHelper interface'inden türetilmiş ve DependencyService olarak assembly register'ı yapılmış her class'a Xamarin.Forms üzerinden ulaşacağım.
Gördüğümüz gibi Xamarin.Forms tarafından IDeviceHelper yardımıyla tetiklediğimiz Droid.ScreenSizeDependency class'ından dp formatında Width ve Height değerlerini aldık.
Şimdi sıra geldi iOS ve WinPhone DependencyService işlemlerine.
iOS Ekran Özellikleri Nasıl Alınır?
iOS üzerindeki UIScreen class'ı bize bu konuda kolaylık sağlıyor.
Hemen iOS için test edelim.. iPhone 6 simulator'u çalıştırıyorum..
Doğru değerleri aldığımızı iPhone development sitesi üzerinden onaylıyoruz.
WinPhone Ekran Özellikleri Nasıl Alınır?
WinPhone için Windows class'ı bize yardımcı oluyor.
Hemen test edelim..
Gördüğümüz gibi artık hangi ortam ve hangi cihaz olursa olsun (emulator ve simulator dahil) ekran üzerindeki gerçek width ve height değerlerini alabiliyoruz.
Makale serimize diğer cihaz özellikleri ile devam edeceğiz.
İlgili linkten projeyi indirebilirsiniz.
Görüşmek üzere.
Post A Reply