TİMER NEDİR?

Timerler, arka planda çalışan belirli aralıklarda tekrarlanmasını istediğimiz olaylara yön vermemizi ve bunları yönetmemizi sağlayan yapılardır. Yani belirli aralıklarda bir kodun çalışmasını istiyorsak .Bu yapıları kullanırız.
Timer belirlenen işlemi yada işlemleri, belirlenen zaman aralıklarıyla çalıştırmamıza olanak sağlar.  Timerlar ile handler aynı görevi yaparlar.

Timer nesnesinin tanımlanması aşağıdaki şekildedir;

timer t;

Timer classı oluşturma;

 class timer extends CountDownTimer {
        public timer(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); }
        @Override
        public void onTick(long millisUntilFinished) {
        }

        @Override
        public void onFinish() {
        }  }

Classımızda iki tane metotudumuz olması gerekiyor. onTick() metodunda neler yapacağımızı söylüyoruz.

Timer nesnemizin kullanımı da şu şekildedir;

t=new timer(10000,10);

Neden 2 parametre aldık ? Çünkü ne kadar sürede ve hangi sürede artacağını parametrede belirttik. Mesela her saniyede 2 artmış oldu.

Şimdi en basitinden bir tane sayaç yapalım. Bir buton ekleyelim.Butonumuz hareket edecek öncelikle.


public class MainActivity extends AppCompatActivity {
    Button button;
    timer t;
    int i;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         button=(Button)findViewById(R.id.button);
        t = new timer(10000, 5);
         i=0;
         t.start();

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

       @Override
       public void onTick(long millisUntilFinishe){
            button.setY(button.getY()-1);
       }
        public void onFinish() {

        }

    }
}
Butonumuz ortadan başlayaıp aşağıdan yukarı doğru hareket ederek sürüklenecek.
Bu şekilde yukarı doğru çıkmış olacak.

Butonun konumunu ;

public void onTick(long millisUntilFinishe){
button.setY(button.getY()-1);
}

Button bu metot sayesinde hareket ediyor. getY()üstünü referans alır.

Şimdi iki tane buton ekleyelim . 1.si sabit dursun. 2.de aşağı doğru hareket edip üst üste geldiğinde dursun.

 timer t;
    int i;

    Button button;
    Button button2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         button=(Button)findViewById(R.id.button);
         button2=(Button)findViewById(R.id.button2);
         t = new timer(10000, 10);
         i=0;
         t.start();
         
    }
    class timer extends CountDownTimer {
        public timer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

           @Override
           public void onTick(long millisUntilFinished){
            if (button.getY()+button.getHeight()<button2.getY()){
                t.cancel();
            }
            else{
                button.setY(button.getY()-2);
            }

       }

Butonun birisi sabit kalırken diğeri aynı hizaya geldiğinde duracak.

Şimdi bir başlat butonuna tıkladğımızda geri sayım sayacı başlayacak ve bir textview alanına kalan süreyi yazacak.


public class MainActivity extends AppCompatActivity {
   Button button;

   timer t;
   int hiz;
   TextView label_hiz;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        hiz=2;
        button=(Button)findViewById(R.id.button);

        t=new timer(10000,10);
        label_hiz=(TextView)findViewById(R.id.label_hiz);
        Button btnHiz =(Button)findViewById(R.id.button3);
        btnHiz.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                hiz+=5;
                label_hiz.setText(String.valueOf(hiz));
            }
        });

    }

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

        @Override
        public void onTick(long millisUntilFinished) {

            button.setY(button.getY()+hiz);

        }

Yorum bırakın