Ders 21: Sliding Gallery

7 Mart 2012 Çarşamba
Evet, eninde sonunda uğraştığım,yapmaya çalıştığım şeyi başardım! Artık elimde sürekli kayan,son elemana gelince başa dönüp,sürekli dönüp duran bir gallery var artık. Şimdiki konumuzda gallery ve bu kayma işlemi üzerine.
Main.xml içine geliyoruz ve tasarımımızı gerçekleştiriyoruz:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Gallery
    android:id="@+id/gallery"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
</LinearLayout>

Görüldüğü üzere burada bir gallery oluşturuyoruz. Öyle farklı bir kodu da yok.

Daha sonra activity dosyamızın içine geliyoruz. onCreate metoduna girmeden hemen önce kullanacağımız değişkenleri tanımlıyoruz. Bunlardan gallery değişkenini malum main.xml içinde tasarladığımız gallery’e erişmek için kullanıcaz. Text adındaki string arrayimizi ise, gallery içinde kullanacağımız,göstereceğimiz elemanları belirlemek için kullanacağız.


Gallery gallery;
String [] text;

Artık yazdığımız kodları onCreate metodu içinde gerçekleştiriyoruz.Gallery’imize erişiyoruz:


gallery=(Gallery)findViewById(R.id.gallery);

String array’imizin elemanlarını yazıyoruz:



text=new String[]{"Hello\t\t","\t\tHi\t\t","\t\tAlloha\t\t",
                            "\t\tBonjour\t\t","\t\tHallo\t\t","\t\t¡Hola\t\t"};

Burada gördüğünüz \t\t kısımları sizi şaşırtmasın,ben itemlar arasında boşluk olsun diye böyle bir şey yaptım.İsteyen yapmasın.Zorunlu bir kullanım değil.

Yeni bir array adapter oluşturuyoruz ve bunun üzerinden string arrayimizin üzerindeki verileri gallery içine aktarmış oluyoruz. Aynı ListView kullanımı gibi.


ArrayAdapter arr=new ArrayAdapter(this,android.R.layout.simple_gallery_item, text);
gallery.setAdapter(arr);

Şimdi Handler sınıfından yeni bir örnek oluşturuyoruz. Ancak değişken tanımlamasını yine onCreate dışında yapalım ki,buna daha sonra başka bir metot içinden de erişebilelim:

onCreate’in hemen üstünde,diğer değişkenlerin altına şunu yazıyoruz:


Handler handler;

onCreate metodu içinde ise oluşturma işlemini gerçekleştiriyoruz:


handler= new Handler();


Bu Handler nesnesini nerede ve hangi amaçla oluşturup,kullandığımızı birazdan açıklayacağım.

Şimdi run() metodumuzu çağırıyoruz. Bu run() metodu Runnable arayüzüne ait ve içi boş durumda bir metot. Bunu çağırabilmek için Runnable arayüzünü implement ediyoruz,run metotudunu çağırıyoruz.



public class GalleryActivity extends Activity implements Runnable
run();

Şimdi yapmamız gereken tek şey ise , run() metodunu tanımlayıp,içini doldurmak.


@Override
     public void run() {
             // TODO Auto-generated method stub
            PicPosition = gallery.getSelectedItemPosition() +1; 
            if (PicPosition == text.length)
            {
            PicPosition=0;
             gallery.setSelection(PicPosition);
            }
            else
            {
            gallery.setSelection(PicPosition);//bir sonraki elemana git.
            }
            handler.postDelayed(this, 1000); //her saniye çalıştır
}

Burada picPosition adında bir değişkenimiz var. Bunu da onCreate metodundan hemen önce tanımlıyoruz tabiî ki.


private int PicPosition;


gallery.setSelection(PicPosition) ile item seçimi yapıyoruz,if içerisinde eğer son itema geldiysek,tekrar ilk itema dönme işlemini yapıyoruz. postDelayed() metodu ile ise bu işlemlerin kaç saniyede bir gerçekleşeceğini tanımlıyoruz.Yani handler nesnesini kayma işleminin ne kadar sıklıkta olacağını belirtmek için kullanıyoruz.
İşte hepsi bu kadar.

Artık elimizde her saniye bir item kayan bir gallery mevcut.

0 yorum:

Yorum Gönder