Monday, January 21, 2013

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
sumber : Agus haryanto


0 comments:

Post a Comment