Android Programlama 5 -> Timer -> Count Down Timer

TIMER

Sürekli olarak tekrar etmesini istediğimiz durumlarda kullanılır. Bunlar bazen kronometre tarzında saniyeyi gösteren basit bir sayaç bazende uzaktaki bir sunucudan düzenli olarak veri çeken bir döngü olabilir.

Basit bir uygulamada Timer sadece Task yapısını ekleyerek kullanılabilir. Fakat uzak sunucudan veri çelmek istediğimizde Timer sisteminin hata vermemesi için Handler yapısı kullanılır.

Fakat biz bugün bu yapıları kullanmayacağız. Biz Timer yardımı ile Android Studio ortamında oyun geliştirmek için temel olaylardan bir kaçı nasıl yapılır bunu göreceğiz. Hadi gelin hep birlikte inceleyelim.

Öncelikle timer sınıfımızı oluşturalım ve bu sınıfı CountDownTimer sınıfından extends edelim. Bu sınıfın içerisine Alt + Insert metodu ile constructor ile imlement metodlarını ekliyoruz.

class timer extends CountDownTimer{

        public timer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onTick(long millisUntilFinished) {
            

        }

        @Override
        public void onFinish() {
                
        }
    }

İkinci olarak global olarak timer sınıfında nesnemizi yaratıyoruz.

timer t;


Daha sonra bu t nesnesini onCreate metodu içerisinde tanımlıyoruz. Bu nesnenin içerisindeki paremetrelerden ilki onTick metodun kaç ms boyunca çalışacağını ikinci paremetre kaç ms de bir yeniden çalışacağını belirtiyor.

 t = new timer(10000,10);

Şimdi kendi örneğimiz için yapmak istediğim iki butonun karşılaşınca durması olayı bunun için de
global olarak 4 buton oluşturuyorum.

 Button car,carSabit,sifirla,carp;

Bu butonları onCreate metodu içerinde tanımlıyorum.
Bu butonlardan ilki aşağıya doğru düşen car butonu.
İkinci buton ise aşağıda sabit duran carSabit butonu.
Üçüncü buton basıldığında çarpışma işlemini gerçekleştirecek.
Dördüncü buton ise car butonunun y eksenindeki yerini tekrar düzenleyerek başlangıçtaki yerinde geri getirecek buton.

car=(Button)findViewById(R.id.car);
carSabit=(Button)findViewById(R.id.carsabit);
carp =(Button)findViewById(R.id.carp);
sifirla =(Button)findViewById(R.id.sifirla);

Bu işlemlerden sonra activity ekranımız şu şekilde görünmelidir.(Ben butonlara ve layouta background atadım isterseniz aşağıdaki videodan izleyerek sizde yapabilirsiniz.)



Şimdi bu çarpışma ve sıfırla butonlarına basıldığında işlemleri gerçekleştirebilmeleri için setOnClickListener metodunu kullanarak butonlara görev atıyoruz.

sifirla.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                car.setY(100);
            }
        });

carp.setOnClickListener(new View.OnClickListener() {
       @Override
          public void onClick(View v) {
                t.start();
            }
        });


Daha sonra onTick metodunun içerisinde car butonunun y eksenindeki yerini değiştirmek için setY metodu ile önce y eksenindeki yerini alıp buna +5 ekliyoruz ve her döngüde 5 piksel ilerlemesini söylüyoruz. Daha sonra karşılaştıklarında durması için if şartını ekleyip işlemi sonlandırıyorum.


public void onTick(long millisUntilFinished) {
        car.setY(car.getY()+5);
      if(car.getY()>carSabit.getY()-carSabit.getHeight())
            t.cancel();

        }



onTick metodu bittiğinde ne yapılması gerektiği onFinish metodu içerisinde belirtiliyor. Bizim işlemimiz tamamlanana kadar onTick metodunun çalışmasını istediğimizden bu metodun içerisinde yeniden başlatıyoruz.

public void onFinish() {
       t.start();
        }


Bu işlemlerden sonra uygulamamız çalışacaktır. Bugün benim anlatmak istediklerim bu kadardı aşağıdaki videodan izleyerek daha detaylı bir şekilde görebilirsiniz. Sorularınız varsa yorumlara bekliyorum :))





Yorumlar

Bu blogdaki popüler yayınlar

JAVA İLE INTERFACE KULLANIMI

Android Programlama 1 -> Buton Ekleme - Toast Mesajı - Activityler Arası Geçiş