Bu yazıda android ile basit bir şekilde nasıl zamanlayıcı (CountDown) yapabiliriz sorusuna çözüm üretmiş olacağız. CountDown Timer örneğini anlayabilmek için android ile “Merhaba Android” uygulaması yapabilmeniz yeterli.
Uygulamamız sadece bir adet TextView’den oluşacak. Bunun için öncelikle eclipse’de yeni bir android projesi oluşturalım.

Resim-1 Android CountDown Timer Proje Oluşturma
Projemizi oluşturduktan sonra şimdide res/layout(resim2) altındaki main.xml dosyamızda bir adet TextView oluşturalım.

Resim-2 Android CountDown Timer Dizin Görünümü
Şimdi de DownCounter.java activity classımızın içerisinden main.xml dosyamızda belirttiğimiz TextView’a zamanlayıcımızı kuralım.
Bunun için öncelikle global countDown isminde TextView oluşturalım sonrada oncreate metodumuzda buna main.xml içerisindeki tanımladığımız countdown id’sine sahip olan Textview’ımızı atayalım. Devamında CountDownExample adında CountDownTimer class’ını extend eden bir class oluşturalım. Bunun içerisinde CountDownTimer’ı extend ettiğimiz için override etmek zorunda olduğumuz iki metodu ekleyelim. Bu methodlardan onTick metodunda countDown’ı oluşturken belirleyeceğimiz milisaniye aralıklarında işlem yaptırabilmemizi sağlar. onFinish metodu ise CountDown bittikten sonra ne yapmak istiyorsak burada implement ediyoruz. CountDownExample classını oluşturduktan sonra countDownExample adında bir CountDowntimer oluşturup start() diyoruz.
package com.trandroid; import android.app.Activity; import android.os.Bundle; import android.os.CountDownTimer; import android.widget.TextView; public class DownCounter extends Activity { TextView countDown; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); countDown = (TextView) findViewById(R.id.countdown); CountDownTimer countDownExample = new CountDownExample(30000, 1000); countDownExample.start(); } public class CountDownExample extends CountDownTimer{ public CountDownExample(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Override public void onTick(long millisUntilFinished) { countDown.setText("" + millisUntilFinished/1000); } @Override public void onFinish() { countDown.setText("Süre Doldu"); } } }

Resim-3 Android CountDown Timer Ekran Görüntüsü
Bu yazının devamı niteliğinde olan CountDown Timer’ı durdurma ve devam etme özellikleri olan yeni bir yazı da buluşmak üzre.
RSS Abonesi Ol
Twitter
Kategori:
Etiketler: 


countDown = (TextView) findViewById(R.id.countdown);
bu satırı anlayamadım. R.id ne demek oluyor? Eclipse tede derleyemedim bu satır yüzünden, o da anlamadı. Yardımcı olabilir misiniz?
merhaba,
Android de xml ile GUI oluşturmak için /layout dizinin altında layout xmlleri oluştururuz. Oluşturduğumuz bu layout dosyalarının içine TextView,ImageView,Button vs. Viewler ekleriz. Eğer ki oluşturduğumuz View’ın özelliklerini Java tarafında değiştirmek istiyorsakta View içinde android:id=”@+id/idisimi” şeklinde tanımlamada bulunuruz. Id tanımlamayı sadece Java tarafında özellik değiştirmek için değil aynı zamanda layout içerisinde de ihtiyacımız olabilir. Örneğin RelativeLayout içinde viewlerin birbirine göre konumu içinde id tanımlamamız gerekmekte. yani button yazının altında gibi.
Gelelim asıl soruna. Android oluşturduğun layoutlara, layout içindeki id’lere, drawabe altında ki resimlere … otomatik olarak integer değerler atar. /gen dizinin altında R.java’ya bakabilirsin. Zaten bu classı değiştirmene de izin vermez.
Eğer ki sen Activity Classında (yukarıdaki örnekteki DownCounter classı) layoutta tanımladığın bir Viewın özelliklerini değiştirmek istiyorsan onu tanımladığın id’ye göre çağırırsın.
TextView countDown = (TextView) findViewById(R.id.countdown); ile de çağırırsın.
Devamı öğleden sonra
Eğer sen main.xml içerisinde bir Textview oluşturup countdown adında bir id vermemişsen elbette R.id.countdown diye çağırdığında bulamayacağı için hata verecektir. main.xml dosyanının içerise şu textviewı ekle düzelecektir.
Sana kolay gelsin
Teşekkürler Fatih bey. Yeni başlıyorum Android programlamaya. İlginize çok teşekkürler
CountDownTimer countDownExample = new CountDownExample(30000, 1000);
üstteki satırı anlamadım…acaba
CountDownExample countDownExample =new CountDownExample();
falan diyip sonradan start konutunu falan veremezmiydiniz ??
sizin komut biraz aklımı karıştırdı
elbette verebilirsiniz.