Kullandığımız birçok uygulama zamanlama ile ilgili işlem yapıyor. Oynadığımız oyunlar, kendimizi test ettiğimiz bilgi yarışmaları vb. hemen hemen her uygulamada zamanla ilgili bir kısıt veya bizler fark etmeden arka planda zamanlı çalışan işlemler söz konusu.
Android’in kütüphanelerinden CountDownTimer geriye doğru saymak için ideal bir kütüphane. Kütüphane sayesinde zamanlamalı birçok işinizi yapabilirsiniz.
Yazının devamında küçük bir kullanım örneğini ve projenin githup bağlantısını bulabilirsiniz.
package com.tugrul.android.countdowntimer; /** * @author Tugrul Asik * @Date 06-JULY-2013 */ import android.app.Activity; import android.os.Bundle; import android.os.CountDownTimer; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class CountdownActivity extends Activity implements OnClickListener { private CountDownTimer geriyeSayici; //Ne kadar sure geriye sayacak private final long baslangic = 10 * 1000; //Hangi araliklarla gosterecek private final long aralik = 1 * 1000; private boolean baslatildi = false; private Button btn_baslat; public TextView tv_kalanSure; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_countdown); btn_baslat = (Button) this.findViewById(R.id.button); btn_baslat.setOnClickListener(this); tv_kalanSure = (TextView) this.findViewById(R.id.timer); geriyeSayici = new MyCountDownTimer(baslangic, aralik); tv_kalanSure.setText(tv_kalanSure.getText() + String.valueOf(baslangic / 1000)); } public class MyCountDownTimer extends CountDownTimer { public MyCountDownTimer(long startTime, long interval) { super(startTime, interval); } /* * Zaman bittiginde calisir */ @Override public void onFinish() { tv_kalanSure.setText("Zaman Bitti ! - Time is UP !"); } @Override public void onTick(long millisUntilFinished) { //Saniye olarak goster 1 saniye = 1000 millis tv_kalanSure.setText("" + millisUntilFinished / 1000); } } @Override public void onClick(View v) { if (!baslatildi) { geriyeSayici.start(); baslatildi = true; btn_baslat.setText("DUR"); } else { geriyeSayici.cancel(); baslatildi = false; btn_baslat.setText("YENIDEN BASLAT"); } } } |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/timer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:paddingRight="10dip" android:textSize="70dp" /> <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:text="BASLAT" /> </RelativeLayout> |
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tugrul.android.countdowntimer" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.tugrul.android.countdowntimer.CountdownActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
Keyifli geliştirmeler 😉