garen.yöndem launching ...3 ...2 ...1

Pivot ve Panorama Kontrollerinde Seçilen Item'ı Yakalamak

17. Ocak 2013 17:35by Garen Yöndem

Windows Phone uygulamalarınız için ApplicationBarlar olmazsa olmazlardan. Her sayfa için ayrı ApplicationBar özellikleri tanımlayabilirsiniz. Ancak, konu Pivot veya Panorama tasarımına sahip sayfalar olunca iş biraz değişebilir. Pivot ve Panorama tipindeki sayfalar, daha geniş kullanım alanı sundukları için çok yönlü kullanıma elverişliler. Elbette bu tip sayfalar için de tek tip ApplicationBar kullanabiliriz. Ancak bu yazıda, Pivot ve Panorama sayfalar içerisindeki Itemlar arasında kaydırma yaparken farklı ApplicationBar’ların nasıl kullanılabileceğini ele alacağız.

Pivot ve Panorama tasarımlarındaki sayfalar, az önce de bahsettiğimiz gibi bize daha geniş kullanım alanı sunuyorlar. Aslında bu alan içerisinde gerçekleşen olay, kullanıcının viewport açısını değiştirerek sayfanın devamındaki içeriği de görebilmesidir. Fakat developerlar için arka planda işler biraz farklı. Örneğin Pivot sayfalarda PivotItemlar ve Panorama tarafında da PanoramaItemlar mevcut. Pivot ve Panorama sayfalarda SelectionChanged event’ını kullanarak sayfa geçişlerini yakalayabilirsiniz.

<!--Pivot-->
<phone:Pivot SelectionChanged="My_Pivot_SelectionChanged"/>

 

<!--Panorama-->
<phone:Panorama SelectionChanged="My_Panorama_SelectionChanged"/>

Bu event’ın yardımıyla her PivotItem veya PanoramaItem için farklı ApplicationBar görüntüleyebilir veya ApplicationBar’ınızı gizleyebilirsiniz.

C# tarafında ise switch-case yöntemiyle Pivot’un SelectedIndex’ine ulaşıp, index numarasına göre farklı işlemleri tetikleyebilirsiniz.

Örnek olarak ApplicationBar’ınızı ikinci Itemda gizlemeye çalıştığınızı varsayalım.

// Pivot
private void My_Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
switch (((Pivot)sender).SelectedIndex)
{
case 0: // index numarasına göre ilk itemı temsil eder
ApplicationBar.IsVisible = true;
break;
case 1:
ApplicationBar.IsVisible = false;
break;
}
}

 

// Panorama
private void Panorama_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
switch (((Panorama)sender).SelectedIndex)
{
case 0: // index numarasına göre ilk itemı temsil eder
ApplicationBar.IsVisible = true;
break;
case 1:
ApplicationBar.IsVisible = false;
break;
}
}

Böylece Pivot'umuzun veya Panorama'mızın ikinci item'ında ApplicationBar'ımızı gizlemiş olduk.

PanoramaSelectionCange.rar (402,34 kb)

Windows Phone SDK 7.1.1'in Getirileri ve 256-Mb Ram Taşıyan Cihazlar için Uygulama Geliştirmek

26. Mayıs 2012 11:00by Garen Yöndem

Windows phone SDK 7.1.1 güncellemesi bildiğiniz üzere bir buçuk ay önce yayınlandı. Fakat yeni SDK'in getirdiklerinden oldukça az kişi haberdar durumda. Microsoftun gelecek planları arasında şüphesiz Windows Phone işletim sistemini olabildiğince düşük konfigürasyonlar altında en yüksek verimlilik ile çalıştirabilmek de yer alıyor. Üreticiler için bu yıl başında revize edilen minimum Windows Phone cihaz özellikleri listesi de bunun en önemli kanıtı. Artık 256Mb RAMli ve 1GHz den düşük işlemcilere sahip Windows Phone cihazlarını görmeye hem tüketici olarak hem de developer olarak hazır olmamız şart. Lakin uygulamalarımız yeni cihazlarda düşük konfigürasyonlar sebebiyle çatlayabilir, patlayabilir.

 

Windows Phone SDK 7.1.1 download (SDK'i buradan indirebilirsiniz)

 

Kısaca yeniliklerin üzerinden geçecek olursak, yeni bir propertymiz, emulatörümüz ve bir de kötü haber var.

 

Artık uygulamamızda yeni bir property olan ApplicationWorkingSetLimit propertysini kullanarak 256Mb ramli cihazları tanıyıp onalara göre uygulamalarımıza şekil aldırabiliriz. Bir başka deyişle Ramimize göre ayağımızı uzatabiliriz :).

 

using Microsoft.Phone.Info;
long miktar = (long)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");
if (miktar < 268435456L)    //268435456 byte = 256 Mb
{
ramkac.Text = ("This device has 256-Mb ram");
}
else if (miktar > 268435456L)
{
ramkac.Text = ("This device has 512-Mb ram"); 
}

 

Bir diğer yenilik ise Emulatörümüzle ilgili. Artık 512Mb'ın yanında bir de 256Mb sanal Ram'e sahip emulatörümüz var. Uygulamarımızın 256Mb cihazlarda nasıl performans göstereceğini bu emülatör ile test edebiliriz. Son olarak, mevcut Windows Phone uygulamarımızda Generic Background Agent kullanıyorsak 256Mb Ramli cihazlar bu agentları ne yazık ki desteklemiyor. Onları da duruma göre kaldırmak gerekecek.

 

Şu anda 256Mb ramli cihazların piyasadaki tek örneği Nokia Lumia 610. Ancak yakın gelecekte daha geniş yelpazede cihazlar göreceğiz. Ama bu durum sizin uygulamalarınızın 256Mb ramli cihazları desteklemek zorunda olduğu anlamına gelmiyor. Bu cihazları desteklemek her ne kadar uygulamalarınızın daha geniş kitlelere ulaşmasını sağlayacak olsa da dilerseniz WMAppManifest.xml dosyasını duzenleyerek uygulamanızın 256Mb ramli cihazlar tarafından Marketplacede görünmemesini de sağlayabilirsiniz.

 

Aşağıdaki kodu uygulamanızın WMAppManifest.xml dosyansına eklediğiniz takdirde uygulamanızın 90Mb rame ihtiyacı olduğunu kod tarafında belirtmiş olcaksınız. Bu sayede Marketplace, 256Mb rame sahip cihazlara sizin uygulamanızı gösteremeyecek.

 

<Requirements>
<Requirement Name="ID_REQ_MEMORY_90" />
</Requirements>

 

Uygulama solutionını indirebilirsiniz

 

ornek.rar (65,02 kb)

 

Takipte kalın, kendinize iyi bakın.

Windows Phone 32-Bit Renk Desteği

11. Mayıs 2012 20:40by Garen Yöndem

Windows Phone’un 7.0 sürümünde ne yazık ki işletim sistemi sadece 16-bit renk derinliğini destekliyordu, öyle ki uygulamanın arayüzünü 32-bit olarak hazırlamış olsanız dahi tüm cihazlar 16-bit gösteriyordu. Bu durum Mango Update’i ile değişiyor. Gelin şimdi 32-bit desteğini uygulamalarımıza nasıl ekleyebileceğimize göz atalım.

 

Her ne kadar metro design prensiplerine ters olsa da, örneğimizde gradientli resimleri Windows Phone üzerinde nasıl bilgisayarimizda gördüğümüz gibi gösterebileceğimizi inceleyeceğiz.

 

Ilk olarak Expression Blend'de boş bir Windows Phone uygulaması oluşturuyoruz.

 

Garen Yöndem Windows Phone 32-Bit Renk Desteği

 

Öncelikle Blend bir kenarda dursun. Uygulamaya bir arkaplan resmi lazım. Ben bu tür işler için Fireworks kullanıyorum ama siz hakim olduğunuz herhangi bir image editing toolu seçebilirsiniz.

 

Garen Yöndem Windows Phone 32-Bit Renk Desteği

 

Windows Phone’a tam oturacak boyutta boş resmi Fireworks ile oluşturduktan sonra ortaya bir rectangle atıp gradient özellikleri veriyoruz. Daha sonra resmi proje dosyamıza ekliyip Blende geri dönebiliriz. Blendde resmi uygulamanın arka planına atıp test için emulatorde calıştıralım.

 

Garen Yöndem Windows Phone 32-Bit Renk Desteği

 

Gördüğünüz gibi Blendde oluşan görüntü ile emulatorde gördüğümüz arasında dağlar kadar fark var. Işte Mango Updateden önce gradient kullanan uygulamalar bu şekilde gözüküyorlardı. Oysa bu problemin çüzümü artık çok basit. Solution Explorer’dan projenin Properties klasöründe bulunan WMAppManifest.xml dosyasını açıyoruz….

 

Garen Yöndem Windows Phone 32-Bit Renk Desteği

 

ve tagının içine BitsPerPixel="32" kodunu yerleştirip problemi çözüyoruz.

 

Garen Yöndem Windows Phone 32-Bit Renk Desteği

 

Uygulamamızı kaydedip tekrar emulatorde çalıştırdığımızda bizi öncekinden çok daha farklı bir manzara bekliyor.

 

Garen Yöndem Windows Phone 32-Bit Renk Desteği

 

Artık uygulamamızı Blendde nasil görüyorsak emulatorde de aynı şekilde görebiliriz.

 

Yine de aklınızda bulunsun, Microsoft’un uyarıları çerçevesinde 32-bit görseller içeren uygulamalar genel performans ve batarya verimliliği sorunları yaşayabiliyor. Dikkatli olmakta fayda var.

 

Takipte kalın, kendinize iyi bakın.