Swipe, ekranda sağa yada sola doğru parmak vuruşuna verilen isim. Uygulamalarda ekranlar arasındaki geçiş bu hareketle sağlanabiliyor. Bir çok güncel uygulama bu özelliği kullanıyor. Google+ yada Android Market, bu uygulamalara örnek olarak verilebilir. Yeni Android Design sitesinde Swipe görünümlerinin nasıl uygulanması gerektiği konusunda daha çok bilgi edinilebilir.
Aslında bu görünümün nasıl uygulanacağı konusunda geliştirici blogunda bir yazı yayınlanmıştı ama yeni başlayanlar için biraz daha açıklamalı yazılabileceğini düşündüm.
Örnek Uygulamamızda iki ekran olacak. Her ekranın xml dosyasını normal bir layout olarak hazırlıyoruz.
Ekranları normalde activity ile oluştururduk ama swipe görünümünde aslında tek activty çalışır. Ekranlarımızı bu tek activty içinde gösterebilmek için Android 3.0 ile gelen fragment türünde oluşturmamız gerekiyor. Fragment yine activty’ye benzediği için kullanımında bir sorun olmamalı.
Fragment kullanan uygulamamızın daha eski android sürümlerinde çalışabilmesi için android-support-v4.jar kütüphanesini projemize eklememiz gerekiyor. Bu kütüphane android sdk içinde extras dizininde bulunur. Yani eğer sdk dizini /home/w3blog/android-sdks ise kütüphane /home/w3blog/android-sdks/extras içinde olacaktır. Project->Properties menüsüne tıklıyoruz.
Gelen pencerede Java Build Path->Libraries->Add External Jars butonuna tıklıyoruz ve dosyamızı seçiyoruz.
Artık fragment oluşturulabilir proje içerisinde. Fragment sınıfından kendi ekranlarımızın yer alacağı sınıfları türetmemiz gerekiyor. Fragment görünümü ilk defa onCreateView(LayoutInflater l, ViewGroup v, Bundle b) methodu içersinde oluşturulur. XML dosyası bu method içerisinde kullanılarak bir ekran haline getiriliyor. Bunun için LayoutInflater türünde bir nesne gerekiyor. Inflate’in kelime anlamı şişirmektir. XML dosyası şişirilerek bir ekran haline getiriliyor gibi düşünülebilir.
Ekranlar ayrı ayrı oluşturduktan sonra artık bunların içerisinde çalışacağı activity oluşturulabilir. Bu ekranda sadece fragmentları gösterecek bir ViewPager elemanı bulunacak. Bu eleman ile ekranlarımız arasındaki ilişkiyi FragmentPagerAdapter sınıfından türettiğimiz özel bir adapter ile sağlayacağız. İlk önce activity’i oluşturalım.
Şimdi adapter sınıfımızı oluşturalım. Burada sadece mantığının anlaşılması için uygulamadaki tüm ekranları bir arraylist içerisinde tutan, gerektiğinde ekranları bu arraylist içerisinden alarak kullanan bir adapter kullanıldı ama performans açısından pek sağlıklı bir yöntem değil. Eğer performansın önemli olduğu bir uygulamada kullanılacaksa alternatif uygulamalar araştırmak daha iyi olacaktır.
Bu sınıf her swipe haraketinde gereken ekranı ViewPager elemanına gönderecektir. Adapter sınıfımızı oluşturduktan sonra activty içerisindeki ViewPager ile artık bunu ilişkilendirmek gerekiyor. Bunun için sınıfımız aşağıdaki gibi değiştirilmeli.
Bu son değişiklikle birlikte swipe kullanan basit bir uygulama tamamlanmış oldu. Uygulamanın kaynak kodlarını buradan indirebilirsiniz.














