Ketika kita berkenalan dengan seseorang, ada saja yang menanyakan tentang berapa umur kita. Tentu kita akan mudah menjawabnya. Biasanya kita akan menjawab 20 tahun. Tapi coba anda bayangkan bagaimana reaksi orang tersebut apabila kita bisa lengkap menjawab 20 tahun 1 bulan 2 hari. Tentunya reaksinya akan lebih heboh J.
Nah pada tutorial kali ini kita akan membuat Aplikasi Android Hitung Umur yang dapat membantu kita, dan user-user android untuk mengetahui umurnya sampai pada satuan hari.
Tutorial ini, juga menjawab pertanyaan dari salah seorang pembaca tentang pengurangan dari 2 tanggal.
Sekarang mari kita mulai misi kita :
1. Buka eclip, buat project
2. Edit File main.xml, lalu ketikkan kode berikut
<?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"> <TextView android:text="Tanggal Lahir :" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <EditText android:text="" android:id="@+id/txtDate" android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText> <Button android:text="Hitung Umur" android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/btnHitungUmur"></Button> <TextView android:text="Umur :" android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <EditText android:text="" android:id="@+id/txtUmur" android:layout_width="fill_parent" android:layout_height="wrap_content" android:editable="false"></EditText> </LinearLayout>
Kode diatas akan menghasilkan user imterface berupa 2 buah edit text yang digunakan untuk memasukkan tanggal lahir dan menempilkan informasi umur setelah button Hitung umur di tap(klik).
3. Edit File HitungUmurActivity.java yang menjadi otak aplikasi kita
package com.agusharyanto.net; import java.util.Calendar; import android.app.Activity; import android.app.DatePickerDialog; import android.app.Dialog; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; public class HitungUmurActivity extends Activity { int hour, minute, mYear,mMonth, mDay; static final int TIME_DIALOG_ID = 0; static final int DATE_DIALOG_ID = 1; private EditText txtDate; private EditText txtUmur; private Button btnHitungUmur; private String[] arrMonth = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); txtDate = (EditText) findViewById(R.id.txtDate); txtUmur = (EditText) findViewById(R.id.txtUmur); btnHitungUmur = (Button) findViewById(R.id.btnHitungUmur); // get the current date final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); txtDate.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent arg1) { // TODO Auto-generated method stub showDialog(DATE_DIALOG_ID); return true; } }); btnHitungUmur.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ // getRequest(txtResult,txtUrl); Calendar now= Calendar.getInstance(); Calendar tanggallahir = Calendar.getInstance(); tanggallahir.set(mYear, mMonth, mDay); int years = now.get(Calendar.YEAR) - tanggallahir.get(Calendar.YEAR); int months = now.get(Calendar.MONTH) - tanggallahir.get(Calendar.MONTH); int days = now.get(Calendar.DAY_OF_MONTH) - tanggallahir.get(Calendar.DAY_OF_MONTH); if (days < 0){ months --; days +=now.getActualMaximum(Calendar.DAY_OF_MONTH); } if (months < 0){ years --; months +=12; } String umur = years+" tahun "+months+ " bulan "+days+" hari"; txtUmur.setText(umur); } }); } @Override protected Dialog onCreateDialog(int id) { switch (id) { case DATE_DIALOG_ID: return new DatePickerDialog( this, mDateSetListener, mYear, mMonth, mDay); } return null; } private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; String sdate = arrMonth[mMonth] + " " + LPad(mDay + "", "0", 2) + ", " + mYear; txtDate.setText(sdate); } }; private static String LPad(String schar, String spad, int len) { String sret = schar; for (int i = sret.length(); i < len; i++) { sret = spad + sret; } return new String(sret); } }
4. Sekarang mari kita run programnya. Masukkan Tanggal Lahir kemudian klik button Hitung Umur
Nah sekarang kalau ditanya umur jawablah dengan lengkap sampai satuan hari. Anda akan mendapat kan ekspresi yang beda dari lawan bicara anda.
Semoga bermanfaat
Agus haryanto
makasih yah pak atas tutorial2’y yang sangat bermanfaat 😀
pak agus ayo dong pak..
sering posting tutorial androidnya lagi.
terima kasih, bermanfaat sekali tutorialnya.
bagus pak .. terus lanjutkan posting tutorial yang bermaanfaat…
mas agus makasih bngt udh ajwab pertanyaan saya..
sukses trs y
terima kasih pak, membantu banget
terima kasih, bermanfaat sekali tutorialnya.
dilanjutkan terus yaa pak posting tutorialnya
pak, saya mau tny, kalau merubah format GIF ke APK bgmna ya?
soalnya saya sedang PI membuat live wallpaper, saya coba buat live wallpapernya menggunakan photoshop dgn format GIF, lalu bgmna cara merubah ke APK nya?
untuk aplikasi penghitungan di atas, sudah masuk tambahan untuk tahun kabisat nya pak?
kn di tiap 4 tahun sekali bulan februari nya sampai 29.
wah bagus nih, terima kasih atas keikhlasan bapa dalam berbagi ilmu
saya mau tanyak nih ,,,
bikin aplikasi kyag gt pake software ap’an y
terimakasih pak agus tutorialnya…
sukses selalu pak.
eh mas, ini sih bukan tutorial namanya.
ini cuman cara building apknya.
semua orang yang ngeliat artikel ini ujung2nya cuman bilang makasih dan copas codingan, compile, trus jadiin apk.
apa bedanya sama anda langsung kasih .apk nya ke org tsb?
ga ada!.
mending semua artikel anda yang berhubungan sama android rename aja jadi “How to build Android application package”.
toh semua isinya sama, ujung2nya anda paling cuma kasih liat codingan + kasih gambar trus jadi deh apknya.(wkwkwk)
plis deh semua artikel model gini cuma bikin orang tolol, dan males. karena org yang udah nge-run nih app di gadget mereka akan bilang kalo itu adalah “buatan mereka sendiri” karena baca artikel anda.
saran saya mending buat 1 artikel yang bener2 build apk dari a sampai z dan “bukan cara bikin aplikasi sampah sederhana kyk gini” yang hanya akan membuat orang malas ngoding.
sisanya suruh pelajari sendiri xml dan java.
Saya akui memang masih ada kekurangan dari tutorial ini. Dan Kalau memang kita bersungguh-sungguh untuk jadi programmer Android yang mantap. saran saya tambahkan dengan :
– Perdalam Java caranya baca buku tentang java dan praktekan
– Baca buku tentang android sendiri misalnya Beginning Android.
– Baca referensi di http://developer.android.com
Kalau ingin cepat, bisa ambil jalan.
– Ambil Kursus Java dan Android (Kebetulan insya Allah mulai pertengahan Oktober ini saya akan buka kelas).
Ayooo semangat belajar java dan android. insya Allah masa depan cerah menanti anda
Koq ada yak orang yang tega bilang tutorial sampah….
Udah berasa paling pinter…paling bener…paling rajin….
saya mau tanya, saya kan udah nyoba yg buat nampilin video tapi kok tetep gk bisa, saya masih binggung naruh file video samplevideo.3gp nya itu dimana??? terima kasih…
mas, saya sudah coba ikut program yg mas buat, tapi yg di activity nya masih salah mas yg punya saya.
setContentView(R.layout.main);
txtDate = (EditText) findViewById(R.id.txtDate);
txtUmur = (EditText) findViewById(R.id.txtUmur);
btnHitungUmur = (Button) findViewById(R.id.btnHitungUmur);
yg id nya bermasalah mas, knp kira2 ??
mohon bantuan nya mas 🙂
@liely, coba cek main.xmlnya apakah sudah benar ?
@lisa, samplevideo.3gpnya disimpan di sdcard.
Mas, klo untuk membatasi tanggal yang di input gimana ya?
mas kalo yang tampil hanya bulan saja bagai mana ya perhitungannya??
thanks ya pak!!
Terima Kasih Ya Mas Agus, untuk Ide pertama pemrograman di Android, Boleh kan, kalau tulisannya dijadikan ref untuk tulisan belajar pemrograman di Android
pak saya mau nanya
untuk kursus letaknya dimana?
Mas agus…
Thanks mas sudah berbagi ilmunya…
Tetap update dengan Tutorial yang barunya…
Salam…
pak agus saya lg ada tugas kampus ni kalkulator kehamilan mohon pencerahan dong…
pak, saya mau tanya, setelah saya run koding di atas kok gak berhasil ya? padahal udah gak ada errornya lagi mohon penjelasannya ya pak. trims
pak kalo mau buat aplikasi untuk komunikasi menggunakan blutut gmn ya??binggung
pak, sudah saya ikuti program yg bapak buat, setelah dirun trus saya isi seperti punya bapak kok hasilnya : “0 tahun 0 bulan 0 hari”
kok bisa yaa, knp kira2?
mohon bantuannya pak 🙂
trim,
maaf pak, bisa menjelaskan fungsi program ini per baris??
saya masih kebingungan dengan fungsi-fungsinya, terimakasih
pak kl kasusnya terbalik kapan (tanggal perkiraan)bayi lahir?? bisa mohon solusinya…
suwun pak
pak saya sudah menjiplak plak sourcecode bapak tp kok msh ada yg eror y pak
package com.agusharyanto.net;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
class HitungUmurActivity extends Activity
{
int hour, minute, mYear, mMonth, mDay;
static final int TIME_DIALOG_ID = 0;
static final int DATE_DIALOG_ID = 1;
private EditText txtDate;
private EditText txtUmur;
private Button btnHitungUmur;
private String[] arrMonth =
{“Jan”,”Feb”,”Mar”,”Apr”,”Jun”,”Jul”,”Aug”,”Sep”,”Oct”,”Nov”,”Dec”
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main); (baris ini eror)
txtDate = (EditText) findViewById(R.id.txtDate);
txtUmur = (EditText) findViewById(R.id.btnHitungUmur);
btnHitungUmur = (Button) findViewById(R.id.btnHitungUmur);
// get the current date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
txtDate.setOnTouchListener(new OntouchListener() (BARIS INI EROR)
{
@Override
public boolean onTouch(View argo, MotionEvent arg1) (BARIS INI EROR)
{
// TODO AUTO-generated method stub
showDialog(DATE_DIALOG_ID);
return true;
}
});
btnHitungUmur.stOnClickListener(new Button.OnClickListener()(baris ini eror)
{
public void onClick(View v)
{
//getRequest(txtResult,txtUrl);
Calendar now= Calendar.getInstance();
Calendar tanggallahir = Calendar.getInstance();
tanggallahir.set(mYear, mMonth, mDay);
int years =now.get(Calendar.YEAR) – tanggallahir.get(Calendar.YEAR);
int months = now.get(Calendar.MONTH) – tanggallahir.get(Calendar.MONTH);
int days = now.get(Calendar.DAY_OF_MONTH) – tanggallahir.get(Calendar.DAY_OF_MONTH);
if (days < 0){
months –;
days +=now.getActualMaximum(Calendar.DAY_OF_MONTH);
}
if (months < 0){
years –;
months +=12;
}
String umur = years+"tahun"+months+"bulan"+days+"hari";
txtUmur.setText(umur);
}
});
}
@Override
protected Dialog onCreateDialog(int id)
{
switch (id)
{
case DATE_DIALOG_ID:
return new DatePickerDialog(
this, mDateSetListener, mYear, mMonth, mDay);
}
return null;
}
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener()
{
@Override
private void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) (BARIS INI EROR)
{
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
String sdate = arrMonth[mMonth] + " " +Lpad(mDay + " ", "0", 2) + ", "+ mYear;
txtDate.setText(sdate);
}
};
private static String Lpad(String schar, String spad, int len)
{
String sret = schar;
for (int i = sret.length(); i < len; i++){
sret = spad + sret;
}
return new String(sret);
}
}
MOHON pencerahannya pak,,,,
mohon diinfokan di edhityapratama@gmail.com
terima kasih
pak kalo mau belajar program di sini http://developer.android.com dimananya ,maap saya ga bisa bahasa inggris 🙂
pak ,mau tanya pernah ,, pernah buat prigram android yang dri scan bisa langsung ke perhitungan ,seperti menscan barcode pada kwh kemudian bisa langsung ada perhitungan tarifnya ?? trims