Tutorial Aplikasi Android Hitung Umur

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

34 comments to Tutorial Aplikasi Android Hitung Umur

  • mia

    makasih yah pak atas tutorial2’y yang sangat bermanfaat 😀

  • pak agus ayo dong pak..
    sering posting tutorial androidnya lagi.

  • Ricoy

    terima kasih, bermanfaat sekali tutorialnya.

  • annisa yustika

    bagus pak .. terus lanjutkan posting tutorial yang bermaanfaat…

  • firman

    mas agus makasih bngt udh ajwab pertanyaan saya..
    sukses trs y

  • fu

    terima kasih pak, membantu banget

  • idris

    terima kasih, bermanfaat sekali tutorialnya.
    dilanjutkan terus yaa pak posting tutorialnya

  • elisa

    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?

  • test

    untuk aplikasi penghitungan di atas, sudah masuk tambahan untuk tahun kabisat nya pak?
    kn di tiap 4 tahun sekali bulan februari nya sampai 29.

  • rianaeva

    wah bagus nih, terima kasih atas keikhlasan bapa dalam berbagi ilmu

  • ceper

    saya mau tanyak nih ,,,
    bikin aplikasi kyag gt pake software ap’an y

  • diandra

    terimakasih pak agus tutorialnya…
    sukses selalu pak.

  • tutorial sampah

    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.

  • Agus Haryanto

    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

  • Nanang

    Koq ada yak orang yang tega bilang tutorial sampah….
    Udah berasa paling pinter…paling bener…paling rajin….

  • lisa

    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…

  • liely

    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 🙂

  • Agus Haryanto

    @liely, coba cek main.xmlnya apakah sudah benar ?

  • Agus Haryanto

    @lisa, samplevideo.3gpnya disimpan di sdcard.

  • Devi Anisah

    Mas, klo untuk membatasi tanggal yang di input gimana ya?

  • Raina_Hally

    mas kalo yang tampil hanya bulan saja bagai mana ya perhitungannya??

  • Aryulius

    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…

  • Yaya

    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

  • indra

    pak kalo mau buat aplikasi untuk komunikasi menggunakan blutut gmn ya??binggung

  • Arum

    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

  • anna

    pak kl kasusnya terbalik kapan (tanggal perkiraan)bayi lahir?? bisa mohon solusinya…
    suwun pak

  • EDHITYA

    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

  • yunus

    pak kalo mau belajar program di sini http://developer.android.com dimananya ,maap saya ga bisa bahasa inggris 🙂

  • cikal

    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

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>