Membangun aplikasi android dengan eclipse

Kalau anda belum download android dan eclipse silahkan baca disini sebelum melanjutkan membaca artikel ini.
Baris berikut adalah iklan, sorry yah...





Langkah2 untuk membangun aplikasi android dengan eclipse adalah sbb:
1. Klik pada File, New, Project secara berurutan
2. di kotak 'New Project ' tekan 'Android'  'Android Project' "Next" secara berurutan
3. di kotak "New Android Project" ketik nama project pada 'Project Name'
4. Pilih Create new project in work space
5. Pilih 'Use default location' (perhatikan di mana alamat default location itu), klik Next
6. Pilih android level apa tergantung HP yang akan memakai aplikasi yang di bangun, dan klik Next 
7. Pada 'Aplication Info' isi 'Package Name' dengan sistim file yang di pisahkan dengan tanda titik. misalnya proyek.membangun.aplikasi.game ,atau proyek.membangun. aplikasi.web
Nama Package name tergantung logika masing developer tapi harus mengikuti logika namespace java. Google menyarankan untuk menulis package name dengan membalikan nama domain seperti com.namaDomain.proyekAndroid.namaProyek Namun semuanya tergantung logika menyusun file sistim masing2
8. Tulis nama activity di dalam 'Create Activity' harus di mulai dengan huruf besar itu adalah peraturan java. Nama activity itu sendiri adalah nama class utama yang akan berperan dalam cara kerja dan logika aplikasi
9. pada Minimum SDK, pilihlah android level yang lama, dengan demikian maka aplikasi yang di buat dapat juga di nikmati oleh mereka yang belum punya android baru. Usahakan sebisa mungkin untuk membangun aplikasi yang bisa di baca oleh setiap tingkatan android dari android lama sampai android yang paling baru.
10. klik 'Finish'

Kalau semua langkah di atas di ikuti dengan benar maka nama aplikasi yang telah anda tulis akan terlihat pada bagian kiri eclipse seperti pada gambar berikut
Untuk menulis class utama yaitu nama activity yang telah kita tulis pada 'Create Activity' sebelumnya, klik pada folder src, klik pada nama package(nama yang di pisahkan olek titik),klik dua kali pada class utama untuk memulai menulis kode java. Lihat contoh sebuah class java

Untuk design user interface(UI) buka folder res, layout secara berurutan di sana akan di temukan halaman yang secara default di beri nama main.xml Sedangkan untuk memuat tulisan yang akan terlihat di layar HP silahkan buka folder values yang di dalamnya terdapat folder bernama strings.xml. Jikalau melihat kode XML seperti android:text="@string/tulisanPerOrang" itu maksudnya, menyuruh HP untuk melihat tulisan yang beridentifikasi tulisanPerorang pada halaman string.xml

Lihat contoh halaman XML untuk user inteface

selamat menulis kode android

Mengatur Lingkungan Kerja Android Pada Windows

Beberapa hal yang di perlukan oleh windows untuk membangun aplikasi android adalah:
1. Java
2. Android
3. Eclipse

Java

Saya download java dari http://www.oracle.com/technetwork/java/javase/downloads/index.html
Setelah di buka zip file maka di dalamnya saya dapatkan folder bernama jdk1.60_18 silahkan ganti nama folder ini sesuai kemauan masing2 tapi harus di ingat bahwa nama folder ini sangat penting untuk di ketahui keberadaan-nya, karena nantinya akan di butuhkan oleh 'windows environment variables' agar sistem windows mengerti java

Cara memasang java pada sistim windows adalah sbb:
- klik dua kali pada folder jdk1.60_18
- klik 2 kali pada folder bin dan ambil alamatnya(path) dari 'address bar'
- klik kanan pada 'My Computer' pilih 'Properties'
- klik pada Advance' atau 'Advance system settings'
- Pada tab 'Advance' klik 'Environment Variables'
- Pada 'System variables' klik satu kali pada 'Path' dan klik 'Edit'
- Paste atau tulis alamat folder bin dari 'Address bar' tadi setelah ketik tanda ';'(tanpa tanda petik)di bagian paling akhir setelah tanda '\'(tanpa tanda petik)pada baris "Variable value". dan klik OK
Perhatian: harus hati2 kalau mau mengubah 'path variables' kalau tidak hati2 maka komputer anda tak dapat bekerja lagi. Hati2 yang saya maksukan di sini adalah agar tidak merubah 'Path' yang telah ada di sana. Kalau perlu copy dulu isi path yang ada sehingga kalau terjadi kesalahan, biasanya kesalahan megetik, maka dengan muda untuk paste kembali isi 'Environment variables' yang ada sebelumnya.

Android

Saya download android SDK(software development kit) dari http://developer.android.com/sdk/index.html
Setelah buka zip file saya dapat folder bernama 'android-sdk-windows'. Kalau anda bukan orang malas seperti saya, silahkan ubah nama folder tersebut sesuai logika anda sendiri, tapi harus di ingat bahwa nama folder tersebut sangat penting untuk di ketahui keberadaan-nya karena ia juga akan di butuhkan oleh windows 'Environment variables'

Langkah untuk memasang android pada windows adalah sbb:
- klik dua kali pada folder 'android-sdk-windows'(mungkin anda telah menguba nama folder)
- cari folder bernama 'tools' dan klik dua kali
- ambil alamat dari address bar dengan cara klik kanan dan 'copy'
- ikuti langkah seperti memasang java tadi, untuk menemukan 'Environment variables'
- Pergi ke bagian paling akhir "Variable value" setelah "\" ktik tanda ';'(tanpa tanda kutip) klik kanan lalu 'paste' atau tekan 'Ctrl' dan 'v'


Eclipse

Download Eclipse dari http://www.eclipse.org/downloads/
Setelah buka file zip, buka file dengan klik 2 kali pada eclipse.exe yang ada logo bundar berwarna ungu (kalau tak salah)

Mengikat android dengan eclipse

untuk membawa android ke dalam ruang kerja eclipse
- buka eclipse, pergi ke Windows, kemudian Preference
- klik sekali pada Android dan klik Browse untuk mencari file 'android-sdk-windows'
- klik 'Apply' dan 'OK'
- Sambung komputer ke internet
- masih di Eclipse, pergi ke 'Help', 'Install New Software'
- Ketik 'ADT - https://dl-ssl.google.com/android/eclipse/' (tanpa tanda kutip) pada baris 'Work with' dan klik 'Add'
- klik 'Select All' lalu 'Next' dan ikuti petunjuk selebihnya sesuai kebutuhan komputer yang anda miliki

Berhasil atau belum?

_masih di dalam Eclipse pergi ke File, New, Project secara berurutan. Kalau berhasil maka 'Android Project' harus ada dalam folder 'Android'
Silahkan mulai bangun aplikasi android dari sana.

Kalau belum tahu cara membangun aplikasi yang mewah silahkan mulai dengan yang sederhana dengan baca disini

Kalkulator untuk bayar tip di restaurant

Hargailah para pekerja2 di hotel2, di cafe, di warung2 termasuk ata_Pika_muku, dengan membiasakan diri untuk memberi tip. Di negara lain seperti Amerika, membayar tip adalah wajib hukumnya. Semoga kita juga tidak kalah untuk bisa membayar sedekah seperti yang di lakukan orang Amerika tsb.
 Ini adalah kalkulator yang bisa di pasang di HP, agar mudah menghitung berapa tip yang harus di bayar dan sekalian sebagai batu loncatan untuk belajar membuat aplikasi berbasis android.

Minggu lalu, di halaman XML saya telah mengulas tentang android user interface(UI). Kali ini saya akan menceritaka bagaimana object-object yang ada pada interface tersebut dapat bekerja sesuai tujuan pembuatannya. Untuk itu mari kita membuat sebuah class yang bekerja untuk menjalankan logika matematika dari aplikasi ini. Demi mempermudahkan komunikasi maka saya memberi nama aplikasinya 'Mesin Hitung' sehingga dengan demikian nama class java yang kita akan bangun sebagai dasar logika aplikasi ini adalah MesinHitung.java
Perhatian...!!untuk menamakan class di bahasa program java haruslah hata-hati. Nama class java tak di perbolehkan ada spasi dan harus di tulis mulai dengan huruf besar, jangan tanya mengapa karena itu adalah hukum java.

Untuk memulai menulis sebuah class pertama kita harus deklarasikan nama paket(package), hal itu sangat penting karena paket itulah yang akan membungkus aplikasi kita sehingga bisa di masukan dan atau di download ke banyak HP di seluruh dunia (wallahhh....ke seluruh dunia? ...mimpi dolohh, yang penting ada mimpi man).
Cara menulis atau menamakan paket adalah di luar jangkauan tulisan ini, namun biasanya nama paket adalah kebalikan dari nama domain, atau nama dengan struktur DSV(dot separated value) umpamanya com.namaDomainAnda.aplikasi.gameKu tapi terserah, setiap developer memiliki cara sendiri bagaimana struktur file sistim-nya masing2. Saya sendiri tidak pakai domain, tapi cukup menggunakan sistim file internal saya sendiri, yang logika-nya mengikuti logika saya sendiri. Masih ada alasan lain mengapa nama paket di atur sedemikian rupa tapi hal itu di luar scope tulisan ini. Kalau develop pakai eclipse maka nama paket terimport ke dalam halaman class secara otomatis karena paket telah di isi dan di namakan sejak build process. Silahkan baca disini untuk proses menamakan paket. Berikut adalah nama paket aplikasi saya menurut logika dan sistim saya sendiri.
package com.vik_sintus.projects.MesinHitung;
/** di wilayah ini nantinya di isi dengan class bawaan android ketika di butuhkan*/
Di awal development, kadang kita tidak tahu dengan pasti object apa saja yang akan kita butuhkan untuk membangun sebuah class, namun eclipse dan android akan memberikan peringatan dengan 'error warning' apabila kita menggunakan object yang belum terimport dan juga object yang belum terdeklarasi, kedalam project. Dengan nada marah(ada tanda silang merah) eclipse akan menyatakan bahwa tulisan kode-nya ada yang salah, tapi walau dia marah eclipse tetap memberikan kita jalan keluar dan memberikan kita banyak kemudahan, misalnya hanya dengan klik pada tanda error maka eclipse akan mempersembahkan kita dengan berbagai pilihan object yang mungkin kita butuhkan untuk memperbaiki kesalahan tsb dan juga memberikan kita banyak rekomendasi kira2 langkah apa yang harus di ambil untuk memperbaiki kesalahan pada kode java yang kita tulis.

Setelah meletak-kan paket di paling atas halaman mari kita lanjutkan membangun MesinHitung.java
package com.vik_sintus.projects.MesinHitung;


public class MesinHitung extends Activity {
/** semua isi class akan berada di sini*/
}
Kode di atas adalah benar tapi eclipse dan android akan menyatakan salah dengan pesan error-nya. Hal itu karena class MesinHitung ingin memakai class Activity bawaan android yang harus di import ke halaman MesinHitung.java. Dan setelah di import maka kode java akan menjadi benar dan nampak sbb:
package com.vik_sintus.projects.MesinHitung;

import android.app.Activity;

public class MesinHitung extends Activity {
/** semua isi class akan berada di sini*/
}
Kode pembukaan di atas hanya menyatakan kepada java bahwa class yang saya buat bernama MesinHitung dan ingin bergandengan tangan dengan class Activity. Isi dari class Activity adalah di luar scope tulisan ini, karena class Activity adalah bagian dari android OS(operating system)
NOTE: yang warna hijau adalah komentar dan tidak akan di eksekusi oleh komputer.

Minggu lalu juga kita telah meletakan 14 buah objects pada halaman main.xml. (bagi yg ingin mencoba develop aplikasi ini, maka saya akan letakan semua file yg di butuhkan di akhir tulisan ini). Dari ke 14 objects tersebut ada 6 objects untuk manampakan tulisan, 2 objects untuk tombol dan 6 objects untuk melakukan logika perhitungan dan cara kerja matematika dari aplikasi ini. Ke 6 objects yang mengandung logika matematika tersebut akan di panggil ke class java untuk di poles agar menjadi pintar. Ke 6 objects tersebut antara lain
3 buah untuk input
3 baris bagian bawah untuk menunjukan hasil
Sedangkan 2 buah tombol yaitu tombol 'Hitung" dan tombol "Ulang" akan di panggil juga, tapi hanya untuk nampang dan merespond ketika di klik saja.

Masing2 dari 6 objects tersebut akan membutuhkan 1 data object yang berjenis angka atau berjenis mata uang. Di dalam bahasa program java data seperti itu identik dengan tipe 'double' data.
Misalnya kalau kita ketik Rp1000 di layar hp, Rp1000 dalam hal ini bukan tipe 'double' karena itu hanya untuk menunjukan angka Rp1000. Oleh karena itu agar Rp1000 dapat memiliki logika hitung maka kita harus membuatkan dia sebuah object bayangan untuk mendampingi object data yang terlihat di layar. Perhatikan 6 objects baru dengan tipe 'double' pada kode berikut, mereka berpasangan dengan 3 objects 'EditText' dan 3 objects 'TextView'. Saya menyatakan ke 6 object itu sebagai object baru karena mereka tidak berada di halaman main.xml yang kita buat minggu lalu. Ke 6 object ini di buat atau di hadirkan semata untuk kepentingan logika. Pemahaman atas kehadiran ke 6 object baru tsb adalah kunci utama untuk memahami logika dan proses kerja aplikasi ini. Bahkan pemahaman akan hal tsb sangat membantu untuk memahami proses pembangunan aplikasi android secara menyeluruh.
package com.vik_sintus.projects.MesinHitung;

import android.app.Activity;

public class MesinHitung extends Activity {
// panggil ke 8 object yg telah di buat di main.xml 
// 3 object berikut utk input 
 private EditText tulisBerapaJumlah;
 private EditText tulisBerapaPersen;
 private EditText tulisBerapaOrang;
// 2 object berikut utk tombol 
 private Button tombolHitung;
 private Button tombolHitungUlang;
// 3 object berikut utk hasil kalkulasi
 private TextView tunjukJumlahTip;
 private TextView tunjukJumlahTotal;
 private TextView tunjukBerapaPerOrang;
// berikut 6 objects baru untuk memegang nilai/angka
 private double berapaJumlah=0;
 private double berapaPersen=0;
 private double jumlahOrang=0;
 private double berapaTip=0;
 private double berapaTotal=0;
 private double berapaPerOrang=0;
/** isi class selngkapnya akan berada di sini*/
}
Secara sederhana EditText adalah untuk membuat tempat yang bisa di ketik di layar HP. Pengguna akan mengisi ketiga tempat text tersebut dan kemudian tekan tombol 'Hitung' sehingga HP dapat menghitung. Mengapa tidak di hitung pakai otak saja? anda benar... tapi di sini kita hanya ingin mengenal bagaimana komputer bisa melakukan komputasi serta melakukan logika menghitung dll. Siapa tahu dari hal yang kecil ini dapat membawa ilmu baru untuk membangun hal-hal yang baru. who knows-lah
Sedangkan Button di pergunakan persis seperti namanya, ia di pakai untuk produksi tombol sedangkan TextView di pakai hanya untuk menampakan text ke layar, text = teks, view = lihat. TextView=melihat teks

Semua objects yang akan dipakai telah di deklarasi seperti terlihat di atas. Selanjutnya konstruksi halaman MesinHitung.java dengan gaya dan cara android.
package com.vik_sintus.projects.MesinHitung;

import android.app.Activity;

public class MesinHitung extends Activity {
// panggil ke 8 object yg telah di buat di main.xml 
// 3 object berikut utk input 
 private EditText tulisBerapaJumlah;
 private EditText tulisBerapaPersen;
 private EditText tulisBerapaOrang;
// 2 object berikut utk tombol 
 private Button tombolHitung;
 private Button tombolHitungUlang;
// 3 object berikut utk hasil kalkulasi
 private TextView tunjukJumlahTip;
 private TextView tunjukJumlahTotal;
 private TextView tunjukBerapaPerOrang;
// 6 objects baru untuk memegang nilai dan angka
 private double berapaJumlah=0;
 private double berapaPersen=0;
 private double jumlahOrang=0;
 private double berapaTip=0;
 private double berapaTotal=0;
 private double berapaPerOrang=0;

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        membuatObyekBerlogika();
    }
/** isi class selngkapnya akan berada di sini*/
}
Kode di atas akan membuat eclipse marah dengan menunjukan 'error warning' muncul tanda silang warna merah. Hal itu di sebabkan oleh karena kita menyinggung class 'Bundle' dan class 'R'. Kita di suruh untuk mengimport dulu kedua class tsb dan setelah keduanya terimport kedalam project, maka class java akan menjadi benar. Kehadiran class 'R' itu sendiri cukup kompleks, ia di generate secara otomatis oleh android  sedangakan class 'Bundle" adalah termasuk salah satu class bawaan sistim android . Dengan demikian kehadiran dan penampilan dari masing2 class tersebut pada halaman mesinHitung.java agak berbeda. Coba perhatikan tampang class tersebut pada code berikut, class "Bundle" terimport dari class bawaan sistim android 'import android.os.Bundle;' sedangkan class "R" terimport dan terbungkus dari paket yang saya buat 'import com.vik_sintus.projects.MesinHitung.R;'.
package com.vik_sintus.projects.MesinHitung;

import com.vik_sintus.projects.MesinHitung.R;

import android.app.Activity;
import android.os.Bundle;

public class MesinHitung extends Activity {
// panggil ke 8 object yg telah di buat di main.xml 
// 3 object berikut utk input 
 private EditText tulisBerapaJumlah;
 private EditText tulisBerapaPersen;
 private EditText tulisBerapaOrang;
// 2 object berikut utk tombol 
 private Button tombolHitung;
 private Button tombolHitungUlang;
// 3 object berikut utk hasil kalkulasi
 private TextView tunjukJumlahTip;
 private TextView tunjukJumlahTotal;
 private TextView tunjukBerapaPerOrang;
// 6 objects baru untuk memegang nilai dan angka
 private double berapaJumlah=0;
 private double berapaPersen=0;
 private double jumlahOrang=0;
 private double berapaTip=0;
 private double berapaTotal=0;
 private double berapaPerOrang=0;
//
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        membuatObyekBerlogika();
    }
/** isi class selngkapnya akan berada di sini*/
}
Perhatikan import com.vik_sintus.projects.MesinHitung.R; semua objects yang kita buat akan ter-registrasi secara otomatis di class "R" itulah sebanya perlu di import kehalaman java. Sedangkan "R" menurut rumour adalah singkatan dari Resource. Mengapa tak di sebut Resource saja? itu urusan pembuat program, saya sendiri juga tak tahu mengapa harus pakai "R" saja.

Ada dua hal penting pada pembukaan konstruksi halaman java seperti terlihat di kode paling bawah pada kode MesinHitung.java di atas. setContentView adalah metode bawaan android, dalam hal ini ia menyatakan lihatlah isi dari aplikasi ini di R.layout.main maksudnya lihat bentuk aplikasi ini di folder bernama 'layout' dan filenya bernama 'main.xml' yang kita buat pada artikel minggu lalu.
Kemudian dari pihak kita sendiri menyatakan hey bahasa programan java halaman java ini juga akan saya pakai untuk membuat sebuah metode agar semua object-object yang saya telah deklarasikan dapat memiliki logika java, Untuk itu maka kita harus menciptakan metode(method) sendiri, seperti terlihat pada kode terakhir pada kode di atas, saya sebut saja metodenya membuatObyekBerlogika(); anda boleh menamakan metode sesuai dengan logika anda sendiri. Kalau bukan demikian maka HP hanya akan melihat tulisan kode kita secara literal alias tak ada, atau tak bisa di pakai untuk logika menghitung.

Setelah metodenya telah terdeklarasi maka perlu di bangun atau di konstruksi cara kerja method yang kita maksudkan
package com.vik_sintus.projects.MesinHitung;

import com.vik_sintus.projects.MesinHitung.R;

import android.app.Activity;
import android.os.Bundle;

public class MesinHitung extends Activity {
// panggil ke 8 object yg telah di buat di main.xml 
// 3 object berikut utk input 
 private EditText tulisBerapaJumlah;
 private EditText tulisBerapaPersen;
 private EditText tulisBerapaOrang;
// 2 object berikut utk tombol 
 private Button tombolHitung;
 private Button tombolHitungUlang;
// 3 object berikut utk hasil kalkulasi
 private TextView tunjukJumlahTip;
 private TextView tunjukJumlahTotal;
 private TextView tunjukBerapaPerOrang;
// 6 objects baru untuk memegang nilai dan angka
 private double berapaJumlah=0;
 private double berapaPersen=0;
 private double jumlahOrang=0;
 private double berapaTip=0;
 private double berapaTotal=0;
 private double berapaPerOrang=0;

@Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   membuatObyekBerlogika();

private void membuatObyekBerlogika(){
 //berikut adalah objects yang perlu di kontrol (di atur)
   tulisBerapaJumlah=(EditText)findViewById(R.id.tulisBerapaJumlah);
   tulisBerapaPersen=(EditText)findViewById(R.id.tulisBerapaPersen);
   tulisBerapaOrang=(EditText)findViewById(R.id.tulisBerapaOrang);
   tunjukJumlahTip=(TextView)findViewById(R.id.tunjukJumlahTip);
   tunjukJumlahTotal=(TextView)findViewById(R.id.tunjukJumlahTotal);
   tunjukBerapaPerOrang=(TextView)findViewById(R.id.tunjukBerapaPerOrang);
   tombolHitung=(Button)findViewById(R.id.tombolHitung);
   tombolHitungUlang=(Button)findViewById(R.id.tombolHitungUlang);
    }
/** isi class selngkapnya akan berada di sini*/
}
Pengaturan seperti terlihat di kode di atas adalah 'self explanatory-lah'. dalam metode tsb kita hanya menyatakan kepada bahasa program java, hey 'tulisBerapaJumlah' yang saya deklrasikan di sini maksudnya adalah sebuah object yang terbuat dari 'EditText' dan dapat di lihat di 'R' yang identitasnya adalah 'tulisBerapaJumlah'. Ingat bahwa bahasa program java dan bahasa progam lain-nya adalah semuanya sangat pintar, tapi semuanya juga tuli dan bisu dan tak punya perasaan. Bagaimana anda komunikasi dengan seorang yang bisu dan juga tuli dan mati rasa? begitulah kalau mau berkomunikasi dengan bahasa programan.
Kode di atas akan ada error warning dari eclipse karena ada class object yang kita pasang tapi belum terimport ke dalam halaman. Setelah class yang kita butuhkan terimport maka kodenya menjadi benar dan akan terliaht sbb
package com.vik_sintus.projects.MesinHitung;

import com.vik_sintus.projects.MesinHitung.R;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Button;
import android.widget.TextView;


public class MesinHitung extends Activity {
// panggil ke 8 object yg telah di buat di main.xml 
// 3 object berikut utk input 
 private EditText tulisBerapaJumlah;
 private EditText tulisBerapaPersen;
 private EditText tulisBerapaOrang;
// 2 object berikut utk tombol 
 private Button tombolHitung;
 private Button tombolHitungUlang;
// 3 object berikut utk hasil kalkulasi
 private TextView tunjukJumlahTip;
 private TextView tunjukJumlahTotal;
 private TextView tunjukBerapaPerOrang;
// 6 objects baru untuk memegang nilai dan angka
 private double berapaJumlah=0;
 private double berapaPersen=0;
 private double jumlahOrang=0;
 private double berapaTip=0;
 private double berapaTotal=0;
 private double berapaPerOrang=0;

@Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   membuatObyekBerlogika();

private void membuatObyekBerlogika(){
 //berikut adalah objects yang perlu di kontrol (di atur)
   tulisBerapaJumlah=(EditText)findViewById(R.id.tulisBerapaJumlah);
   tulisBerapaPersen=(EditText)findViewById(R.id.tulisBerapaPersen);
   tulisBerapaOrang=(EditText)findViewById(R.id.tulisBerapaOrang);
   tunjukJumlahTip=(TextView)findViewById(R.id.tunjukJumlahTip);
   tunjukJumlahTotal=(TextView)findViewById(R.id.tunjukJumlahTotal);
   tunjukBerapaPerOrang=(TextView)findViewById(R.id.tunjukBerapaPerOrang);
   tombolHitung=(Button)findViewById(R.id.tombolHitung);
   tombolHitungUlang=(Button)findViewById(R.id.tombolHitungUlang);
    }
/** isi class selngkapnya akan berada di sini*/
}
Berikutnya kita memasang tombol yang hidup dan berlogika, tombol 'Hitung' untuk menghitung dan tombol 'Ulang' untuk menghitung ulang. Untuk pekerjaan seperti itu maka kita akan menggunakan jasa metode bawaan dari android yang bernama setOnClickListener yang bekerja untuk menghidupkan tombol dan juga metode onClick untuk printahkan android apa yang di lakukan saat pengguna hp menekan tombol.
package com.vik_sintus.projects.MesinHitung;

import com.vik_sintus.projects.MesinHitung.R;

import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;


public class MesinHitung extends Activity {
// panggil ke 8 object yg telah di buat di main.xml 
// 3 object berikut utk input 
 private EditText tulisBerapaJumlah;
 private EditText tulisBerapaPersen;
 private EditText tulisBerapaOrang;
// 2 object berikut utk tombol 
 private Button tombolHitung;
 private Button tombolHitungUlang;
// 3 object berikut utk hasil kalkulasi
 private TextView tunjukJumlahTip;
 private TextView tunjukJumlahTotal;
 private TextView tunjukBerapaPerOrang;
// 6 objects baru untuk memegang nilai dan angka
 private double berapaJumlah=0;
 private double berapaPersen=0;
 private double jumlahOrang=0;
 private double berapaTip=0;
 private double berapaTotal=0;
 private double berapaPerOrang=0;

@Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   membuatObyekBerlogika();

private void membuatObyekBerlogika(){
 //berikut adalah objects yang perlu di kontrol (di atur)
   tulisBerapaJumlah=(EditText)findViewById(R.id.tulisBerapaJumlah);
   tulisBerapaPersen=(EditText)findViewById(R.id.tulisBerapaPersen);
   tulisBerapaOrang=(EditText)findViewById(R.id.tulisBerapaOrang);
   tunjukJumlahTip=(TextView)findViewById(R.id.tunjukJumlahTip);
   tunjukJumlahTotal=(TextView)findViewById(R.id.tunjukJumlahTotal);
   tunjukBerapaPerOrang=(TextView)findViewById(R.id.tunjukBerapaPerOrang);
   tombolHitung=(Button)findViewById(R.id.tombolHitung);
   tombolHitungUlang=(Button)findViewById(R.id.tombolHitungUlang);
   // berikut untuk menghidupkan tombol
   tombolHitung.setOnClickListener(new Button.OnClickListener() { 
      @Override
   public void onClick (View v){ 
       hitung(); 
       }
      }
     );
   tombolHitungUlang.setOnClickListener(new Button.OnClickListener() { 
      @Override
   public void onClick (View v){ 
       ulangi(); 
       }
      }
     );

   }
/** isi class selngkapnya akan berada di sini*/
}
Untuk melengkapi kode di atas maka perlu untuk mengimport class 'Button' untuk membuat tombol, dan class 'View' untuk membuka halaman ketika tombol di pencet.
Perhatikan tombolHitung dan tombolHitungUlang pada kode di atas. Secara sederhana android menyatakan hey object tombolHitung dengarlah apa yang di lakukan pemilik HP kalau di klik maka kau buka dan hitung yah.
Tadi saya jelaskan bahwa bahasa program adalah pintar tapi tuli dan buta, kita manusia secara otomatis tahu kalau hitung, yah menghitung dong. Namun bahasa program adalah lain cerita, kita harus menjelaskanya secara teliti dan se detail mungkin. Hitung macam apa? yang perlu di hitung tinggal dimana? dan yang perlu di hitung bentuknya seperti apa? Berikut adalah metode(method) hitung() di perjelaskan lagi secra detail proses menghitung yang di maksudkan dalam hitung();.
package com.vik_sintus.projects.MesinHitung;

import com.vik_sintus.projects.MesinHitung.R;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MesinHitung extends Activity {
// panggil ke 8 object yg telah di buat di main.xml 
// 3 object berikut utk input 
 private EditText tulisBerapaJumlah;
 private EditText tulisBerapaPersen;
 private EditText tulisBerapaOrang;
// 2 object berikut utk tombol 
 private Button tombolHitung;
 private Button tombolHitungUlang;
// 3 object berikut utk hasil kalkulasi
 private TextView tunjukJumlahTip;
 private TextView tunjukJumlahTotal;
 private TextView tunjukBerapaPerOrang;
// 6 objects baru untuk memegang nilai dan angka
 private double berapaJumlah=0;
 private double berapaPersen=0;
 private double jumlahOrang=0;
 private double berapaTip=0;
 private double berapaTotal=0;
 private double berapaPerOrang=0;

@Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   membuatObyekBerlogika();

private void membuatObyekBerlogika(){
 //berikut adalah objects yang perlu di kontrol (di atur)
   tulisBerapaJumlah=(EditText)findViewById(R.id.tulisBerapaJumlah);
   tulisBerapaPersen=(EditText)findViewById(R.id.tulisBerapaPersen);
   tulisBerapaOrang=(EditText)findViewById(R.id.tulisBerapaOrang);
   tunjukJumlahTip=(TextView)findViewById(R.id.tunjukJumlahTip);
   tunjukJumlahTotal=(TextView)findViewById(R.id.tunjukJumlahTotal);
   tunjukBerapaPerOrang=(TextView)findViewById(R.id.tunjukBerapaPerOrang);
   tombolHitung=(Button)findViewById(R.id.tombolHitung);
   tombolHitungUlang=(Button)findViewById(R.id.tombolHitungUlang);
// berikut untuk menghidupkan tombol  
tombolHitung.setOnClickListener(new Button.OnClickListener() { 
      @Override
   public void onClick (View v){ 
       hitung(); 
       }
      }
     );
   tombolHitungUlang.setOnClickListener(new Button.OnClickListener() { 
      @Override
   public void onClick (View v){ 
       ulangi(); 
       }
      }
     );

   }
// apa yang di lakukan setelah tombol 'Hitung' di klik
private void hitung(){
     //apa yang perlu di hitung? data macam apa? tinggalnya dimana?
     berapaJumlah=Double.parseDouble(tulisBerapaJumlah.getText().toString());
     berapaPersen=Double.parseDouble(tulisBerapaPersen.getText().toString());
     jumlahOrang=Double.parseDouble(tulisBerapaOrang.getText().toString());
     
     //logika matematika-nya
     berapaTip=(berapaJumlah*berapaPersen)/100;
     berapaTotal=berapaJumlah+berapaTip;
     berapaPerOrang=berapaTotal/jumlahOrang;
     
     //hasil perhitungan
     tunjukJumlahTip.setText(Double.toString(berapaTip));
     tunjukJumlahTotal.setText(Double.toString(berapaTotal));
     tunjukBerapaPerOrang.setText(Double.toString(berapaPerOrang));

}
/** isi class selngkapnya akan berada di sini*/
}
Lihat logika hitung() pada kode di atas, Kalau kita manusia menyatakan berapaJumlah maksudnya berapaJumlah tapi komputer lain ceritanya. Kita harus jelaskan berapaJumlah itu apa? tinggalnya di mana? bentuknya bagaimana? Setelah komputernya paham, baru kemudian komputer menjadi lebih pintar dari kita, sebelum itu komputer hanyalah onggokan besi dan kabel.

Metode 'Ulangi()" yaitu untuk menghitung ulang, ia memiliki logika yang sederhana saja, ia hanya menyatakan... kalau klik "Ulang"  maka 3 objects kembali ke '0' dan tiga objects lainnya di isi saja dengan titik seperti ini "..." seperti di tunjukan pada kode berikut. Dengan demikian maka class MesinHitung.java menjadi lengkap sebagai sebuah class java seperti di bawah ini
package com.vik_sintus.projects.MesinHitung;
/**(c)Vik Sintus Projects
*tak di perkenankan pakai kode ini untuk kepentingan komersial,
*boleh d pakai untuk kepentingan belajar saja,
*
*/
import com.vik_sintus.projects.MesinHitung.R;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MesinHitung extends Activity {
// panggil ke 8 object yg telah di buat di main.xml 
// 3 object berikut utk input 
 private EditText tulisBerapaJumlah;
 private EditText tulisBerapaPersen;
 private EditText tulisBerapaOrang;
// 2 object berikut utk tombol 
 private Button tombolHitung;
 private Button tombolHitungUlang;
// 3 object berikut utk hasil kalkulasi
 private TextView tunjukJumlahTip;
 private TextView tunjukJumlahTotal;
 private TextView tunjukBerapaPerOrang;
// 6 objects baru untuk memegang nilai dan angka
 private double berapaJumlah=0;
 private double berapaPersen=0;
 private double jumlahOrang=0;
 private double berapaTip=0;
 private double berapaTotal=0;
 private double berapaPerOrang=0;

@Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   membuatObyekBerlogika();

private void membuatObyekBerlogika(){
 //berikut adalah objects yang perlu di kontrol (di atur)
   tulisBerapaJumlah=(EditText)findViewById(R.id.tulisBerapaJumlah);
   tulisBerapaPersen=(EditText)findViewById(R.id.tulisBerapaPersen);
   tulisBerapaOrang=(EditText)findViewById(R.id.tulisBerapaOrang);
   tunjukJumlahTip=(TextView)findViewById(R.id.tunjukJumlahTip);
   tunjukJumlahTotal=(TextView)findViewById(R.id.tunjukJumlahTotal);
   tunjukBerapaPerOrang=(TextView)findViewById(R.id.tunjukBerapaPerOrang);
   tombolHitung=(Button)findViewById(R.id.tombolHitung);
   tombolHitungUlang=(Button)findViewById(R.id.tombolHitungUlang);
 // berikut untuk menghidupkan tombol 
   tombolHitung.setOnClickListener(new Button.OnClickListener() { 
      @Override
   public void onClick (View v){ 
       hitung(); 
       }
      }
     );
   tombolHitungUlang.setOnClickListener(new Button.OnClickListener() { 
      @Override
   public void onClick (View v){ 
       ulangi(); 
       }
      }
     );

   }
// apa yang di lakukan setelah tombol 'Hitung' di klik
 private void hitung(){
     //nilai berapa, datang darimana
     berapaJumlah=Double.parseDouble(tulisBerapaJumlah.getText().toString());
     berapaPersen=Double.parseDouble(tulisBerapaPersen.getText().toString());
     jumlahOrang=Double.parseDouble(tulisBerapaOrang.getText().toString());
     
     //logika matematika-nya
     berapaTip=(berapaJumlah*berapaPersen)/100;
     berapaTotal=berapaJumlah+berapaTip;
     berapaPerOrang=berapaTotal/jumlahOrang;
     
     //hasil perhitungan
     tunjukJumlahTip.setText(Double.toString(berapaTip));
     tunjukJumlahTotal.setText(Double.toString(berapaTotal));
     tunjukBerapaPerOrang.setText(Double.toString(berapaPerOrang));

}
//ketika klik tombol Ulang kembali ke 0 dan ...
 private void ulangi(){
     tulisBerapaJumlah.setText("0");
     tulisBerapaPersen.setText("0");
     tulisBerapaOrang.setText("0");
     tunjukJumlahTip.setText("....");
     tunjukJumlahTotal.setText("....");
     tunjukBerapaPerOrang.setText("....");
    }

}
Logika MesinHitung.java selasai, bagi yang ingin membuat aplikasi ini menjadi lengkap dan dapat di install ke HP, maka berikut adalah 3 buah halaman xml untuk melengkapi kode java di atas dan beraksi sebagai interface. Halaman main.xml telah di panggil dari kode di atas coba lihat di bagian  setContentView(R.layout.main); dan dari dalam main.xml akan di panggil beberapa text untuk tampil di layar HP melalui @string .

Ke 3 file xml tsb antara lain
  • main.xml
  • strings.xml dan
  • AndroidManifest.xml

Berikut adalah isi dari main.xml
<?xml version="1.0" encoding="utf-8"?>
<linearlayout 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:orientation="vertical" 
xmlns:android="http://schemas.android.com/apk/res/android">
    
    <linearlayout 
android:id="@+id/linearLayout1" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisanBerapaJumlah" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisanBerapaJumlah" 
android:textsize="20sp">
    </textview>
    <edittext 
android:id="@+id/tulisBerapaJumlah" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:text="@string/tulisBerapaJumlah">
    </edittext>
</linearlayout>

    <linearlayout 
android:id="@+id/linearLayout2" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisanBerapaPersen" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisanBerapaPersen" 
android:textsize="20sp">
    </textview>
    <edittext 
android:id="@+id/tulisBerapaPersen" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:text="@string/tulisBerapaPersen">
    </edittext>
</linearlayout>

    <linearlayout 
android:id="@+id/linearLayout3" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisanBerapaOrang" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisanBerapaOrang" 
android:textsize="20sp">
    </textview>
    <edittext 
android:id="@+id/tulisBerapaOrang" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:text="@string/tulisBerapaOrang">
    </edittext>
</linearlayout>

    <linearlayout 
android:id="@+id/linearLayout4" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent">
    <button 
android:id="@+id/tombolHitung" 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:layout_width="wrap_content" 
android:text="@string/tombolHitung" 
android:textsize="20sp">
    </button>
    <button 
android:id="@+id/tombolHitungUlang" 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:layout_width="wrap_content" 
android:text="@string/tombolHitungUlang" 
android:textsize="20sp">
    </button>
</linearlayout>

    <linearlayout 
android:id="@+id/linearLayout5" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisJumlahTip" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisJumlahTip">
    </textview>
    <textview 
android:id="@+id/tunjukJumlahTip" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="wrap_content" 
android:text="" 
android:textcolor="#99FF33" 
android:textstyle="bold">
    </textview>
</linearlayout>

    <linearlayout 
android:id="@+id/linearLayout6" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisanJumlahTotal" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisanJumlahTotal">
    </textview>
    <textview 
android:id="@+id/tunjukJumlahTotal" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="wrap_content" 
android:text="" 
android:textcolor="#99FF33" 
android:textstyle="bold">
    </textview>
</linearlayout>
<linearlayout 
android:id="@+id/linearLayout7" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisanPerOrang" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisanPerOrang">
    </textview>
    <textview 
android:id="@+id/tunjukBerapaPerOrang" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="wrap_content" 
android:text="" 
android:textcolor="#99FF33" 
android:textstyle="bold">
    </textview>
</linearlayout>
</linearlayout>

Perhatikan pada kode xml di atas ada beberapa @string yang akan di jawab oleh strings.xml di bawah ini. Berikut adalah isi dari strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="nama_aplikasi">BayarTip </string>
    <string name="tulisanBerapaJumlah">Besarnya Bill....Rp</string>
    <string name="tulisBerapaJumlah">0</string>
    <string name="tulisanBerapaPersen">Tipnya Berapa..%</string>
    <string name="tulisBerapaPersen">0</string>
    <string name="tulisanBerapaOrang"> Berapa Orang......</string>
    <string name="tulisBerapaOrang">0</string>
    <string name="tombolHitung">Hitung</string>
    <string name="tombolHitungUlang">Ulang</string>
    <string name="tulisJumlahTip">Jumlah Tip = </string>
    <string name="tulisanJumlahTotal">Jumlah Total = </string>
    <string name="tulisanPerOrang">Per Orang = </string>
</resources>
Berikut adalah isi dari AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.vik_sintus.projects.MesinHitung"
      android:versionCode="1"
      android:versionName="bayarTip 1.0">
    <uses-sdk android:minSdkVersion="3" />

    <application  android:icon="@drawable/logo" 
                  android:label="@string/nama_aplikasi">
        <activity android:name="com.vik_sintus.projects.MesinHitung.MesinHitung"
                  android:label="@string/nama_aplikasi">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" /> 
            </intent-filter>
        </activity>
       
    </application>
</manifest>

Summary:
Agar dapat bekerja sebagai mesin hitung tip maka class MesinHitung.java di atas membutuhkan 3 buah file xml yaitu:
  • main.xml
  • strings.xml
  • AndroidManifest.xml
Silahkan mencoba
Hasilnya seperti gambar berikut

Membuat User Interface di Android

Menurut saya, hal yang paling rumit dalam proses pembangunan sebuah aplikasi android adalah pengaturan,  struktur user interface(UI). Berhasil atau tidaknya sebuah proyek pembangunan aplikasi adalah sangat tergantung pada proses penyusunan UI yang cukup berlogika baik untuk developer sendiri maupun untuk pengguna. Tanpa struktur inteface yang solid maka pembangunan sebuah software akan terbengkelai bahkan tak akan pernah selesai. Saya sendiri punya setumpuk aplikasi yang telah mulai di bangun tapi tak satupun yang selesai, Mudah2an ketika pensiun nanti baru ada banyak waktu untuk menyelesaikan-nya. Saya hanya dapat menyelesaikan aplikasi kecil seperti yang akan saya tunjuk-kan disini

Berikut adalah sebuah aplikasi yang saya rombak dari awal hingga akhir. Aplikasi ini sangat sederhana sehingga tidak butuh orang pintar untuk membuatnya, orang seperti sayapun bisa. Alasan utama mengapa saya paham dengan aplikasi sederhana ini karena UI-nya hanya sedikit dan pendek. Aplikasi inipun sudah banyak bergentayangan di internet, ada yang di download secara gratis adapula yang harus di beli. Aplikasi ini digunakan untuk kakulasi berapa persen tip yang harus di berikan kepada pelayan restaurant dan di gunakan untuk menghitung pembayaran bill restaurant yang perlu di bagi rata atau di share pembayaran-nya oleh peserta yang ikut makan sehingga tidak membebankan pembayaran hanya satu orang saja..(jangan nebeng terus yah).
Untuk memperlancar proses belajar maka saya telah memasang aplikasi ini di android market, silahkan di download disini, untuk melihat secara langsung bagaimana sebuah aplikasi android di buat dari awal sejak menulis kode sampai akhirnya di download ke HP ke seluruh dunia (mimpi doloh...) sehingga artikel ini tak akan nampak hanya asal ngomong tanpa bukti yang jelas. Aplikasi inipun sangat sederhana tapi proses pembuatan semua aplikasi hampir sama, dari yang sederhana sampai ke aplikasi yang sangat mewah. Saya harapkan agar dapat menggairahkan developer2 muda, sehingga di masa yang akan datang Indonesia tidak saja menjadi konsumer software tapi juga bisa menjadi producer(mimpi lageee...).
Setelah aplikasinya di masuk-kan ke hand phone maka akan terlihat seperti gambar berikut:
Setelah berdebat sengit antara aku, saya dan diri sendiri akhirnya sepakat untuk menggunakan UI seperti pada gambar di atas. Design UI boleh di design se-indah atau se-jelek mungkin tergantung persetujuan semua pihak atau tergantung UI mana yang di sukai pasar.
Sebelum menulis kode XML untuk membangun interface, perhatikan se-jeli mungkin... lagi dan lagi... semua obyek(object) yang ada di interface, gagal memperhatikan obyek2 yang  di perlukan maka 100% proyek pembangunan aplikasi akan gagal pula.

Pada gambar di atas terdapat 14 object hadir menempatkan posisinya di layar. Ke 14 object tersebut adalah amat sangat perlu untuk di cermati. Dapatkah anda melihat 14 object tsb?... pada gambar di atas terlihat dari atas ke bawah ada 7 baris, setiap baris ada 2 object yaitu object bagian kiri dan object bagian kanan. Masing2 object tentunya memiliki fungsi dan tanggung jawab masing2. Misalnya, tombol "Hitung" di gunakan untuk menghitung dan ia di buat dari widget android bernama <Button>, sedangkan tulisan 'Besarnya Bill....Rp' dan beberapa tulisan lainya adalah di buat dari widget yang bernama <TextView> di sebut TextView karena memang gunanya hanya untuk memperlihatkan text atau hanya memperlihatkan tulisan pada layar mobile devices. Di lain pihak, di pojok kanan atas layar terlihat 3 object yang nampak seperti tombol juga tapi ketiganya bukan tombol melainkan tempat untuk menempatkan text, di buat dari widget yang bernama (EditText) kerjanya untuk pegang text yang mau di edit karena memang di dalam ketiga tombol itu akan sering di edit text-nya setiap kali kita mau buat kalkulasi baru.

Mari kita bangun interfacenya pakai XML. saya memutuskan untuk menggunakan design linear layout yaitu design yang menggunakan line by line patern. Masing2 developer memiliki alasan sendiri untuk memakai design patern yang di sukainya. Pada proyek ini saya pakai linear layout karena memang bentuk interface yang akan di hasilkan adalah baris demi baris.

Demi flexiblelity saya akan membungkus semua baris(linear)  dalam satu LinearLayout sehingga di dalam satu LinearLayout ada banyak LinearLayout yang lain
Kode XML berikut adalah LinearLayout Utama yang akan membungkus semua LinearLayout lain yang berada di dalam-nya



Kode di atas boleh di katakan hanya untuk membuka layar kosong karena belum ada isinya, ia hanya menyatakan bahwa semua yang ada di dalamnya akan menunjukan interface yang berorientasi 'vertikal' sedangkan 'fill_parent' maksudnya agar semua isi yang terkandung akan memenuhi ruang yang di sediakan(apapun alasan-nya, jangan lari atau sembunyi di luar layar)

Kode berikut untuk baris pertama pada layar

    
    
    
    


Saya sengaja menggunakan kata aduhai yang amat keren sebagai judul artikel ini "Strategi" alamak saya sendiri jadi takut membacanya (di kampung saya istilahnya 'mlaju legit'). Strategi yang saya maksudkan di sini adalah bekerja lebih keras, menulis lebih banyak kode yang kadang melebihi yang di butuhkan oleh aplikasi yang kita bangun, coba perhatikan pada kode XML di atas, ada banyak sekali kodenya hanya untuk satu baris pertama yang akan muncul di layar? itupun belum seberapa karena pada kode di atas ada @string yang berarti isi baris @string adalah berada  pada halaman lain yang bernama strings.xml, nanti kita akan kesana untuk membuat halaman strings.xml.
Di dalam kode di atas terdapat 2 object untuk memenuhi kebutuhan baris pertama pada layar HP. Object bagian kiri saya beri nama 'tulisanBerapaJumlah' yang di buat dari widget bernama <TextView> , menggunakan TextView karena memang kerjanya hanya untuk view text atau hanya untuk menunjuk-kan teks pada layar HP, sedangkan object di bagian kanan saya kasih nama 'tulisBerapaJumlah' dan di buat dari widget yang bernama <EditText>, menggunakan EditText karena memang kerjanya untuk ganti atau edit text lihat perbedaan-nya? tulisan adalah kata benda karena sudah di tulis  namun tulis masih perlu di tulis lagi dalam hal ini di edit... bingung? coba lihat lagi di layar pada gambar HP di atas. Tulisan yang bagian kiri seperti  'Besarnya Bill....Rp' sudah di tulis, itu sebabnya saya sebut tulisan... nanti semuanya akan lebih jelas ketika kita sampai pada menulis kode java.
@id pada kode di atas adalah logika yang akan di pakai oleh java untuk mengidentifikasi baris pertama pada layar. @id/linearLayout1 adalah nama UI untuk baris pertama, Semua object dengantanda @id akan secara otomatis ter registrasi pada java resource yang secara otomatis pula di beri nama R.java Semua kepentingan logika java akan berada di dalam R.java untuk kepentingan java logic, di himbau untuk tidak merubah isi R.java kecuali kalau sudah berpengalaman untuk itu.
Nama-nama id terserah developer, saya pakai nama default @id/linearLayout1 karena malas ketik (malas penyakit bawaan saya). Sedangkan 'wrap_content' adalah memberikan ruang untuk object sesuai kebutuhan-nya atau sesuai ukuran object itu sendiri (jangan melebar atau meninggi, walau ada ruangan untuk itu), wrap_content adalah saudara sepupunya fill_parent .

Kode xml berikut untuk baris ke 2 berapa % tip-nya

    
    
    
    


Perhatikan lagi, 'tulisanBerapaPersen' terbuat dari <TextView> sedangkan 'tulisBerapaPersen' di buat dari <EditText> karena text-nya akan selalu di edit sesuai dengan besar/kecilnya persentase tip yang akan di berikan. Lihat "@+id/tulisanBerapaPersen" dan "@+id/tulisBerapaPersen" adalah identitas dari kedua object tersebut agar di kenal java.
"@string/tulisanBerapaPersen" maksudnya lihat isi dari 'tulisanBerapaPersen' di strings.xml (semuanya akan lebih jelas ketika kita membuka halaman strings.xml)

Berikut untuk baris ke 3 yaitu menunjuk-kan jumlah orang yang ikut membayar

    
    
    
    

Yang berikut adalah untuk kedua tombol 'Hitung' dan tombol 'Ulang' keduanya terbuat dari widget <Button>

    
    

Kode xml berikut adalah untuk menulis tip yang akan di berikan dan tempat muncul jumlah tip yang akan muncul di bagian kanan layar

    
    
    
    

Perhatikan kode di atas kedua object "tulisJumlahTip" dan "tunjukJumlahTip" addalah terbuat dari widget <TextView>  karena memang keduanya hanya bekerja untuk menunjuk-kan text pada layar telephone.

Berikut adalah dua baris terakhir untuk 'Jumlah Total' dan 'Per Orang' yang berisikan 4 objects. Sama seperti jumlah tip di atas ke 4 object berikut adalah terbuat dari <TextView> juga


    
    
    
    


    
    
    
    

Kalau membangun aplikasi pakai Eclipse, maka secara otomatis file antarmuka di atas akan di beri nama main.xml. Walau demikian kita bisa merubah nama file tersebut sesuai dengan logika kita sendiri. Android sengaja menamakan file tersebut main.xml karena file itu adalah file utama(main)yang akan di panggil dari kode java untuk komputasi dan logika kerja dari aplikasi ini.
Secara keseluruhan file main.xml di atas akan menjadi lengkap seperti berikut
<?xml version="1.0" encoding="utf-8"?>
<linearlayout 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:orientation="vertical" 
xmlns:android="http://schemas.android.com/apk/res/android">
    
    <linearlayout 
android:id="@+id/linearLayout1" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisanBerapaJumlah" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisanBerapaJumlah" 
android:textsize="20sp">
    </textview>
    <edittext 
android:id="@+id/tulisBerapaJumlah" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:text="@string/tulisBerapaJumlah">
    </edittext>
</linearlayout>

    <linearlayout 
android:id="@+id/linearLayout2" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisanBerapaPersen" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisanBerapaPersen" 
android:textsize="20sp">
    </textview>
    <edittext 
android:id="@+id/tulisBerapaPersen" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:text="@string/tulisBerapaPersen">
    </edittext>
</linearlayout>

    <linearlayout 
android:id="@+id/linearLayout3" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisanBerapaOrang" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisanBerapaOrang" 
android:textsize="20sp">
    </textview>
    <edittext 
android:id="@+id/tulisBerapaOrang" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:text="@string/tulisBerapaOrang">
    </edittext>
</linearlayout>

    <linearlayout 
android:id="@+id/linearLayout4" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent">
    <button 
android:id="@+id/tombolHitung" 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:layout_width="wrap_content" 
android:text="@string/tombolHitung" 
android:textsize="20sp">
    </button>
    <button 
android:id="@+id/tombolHitungUlang" 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:layout_width="wrap_content" 
android:text="@string/tombolHitungUlang" 
android:textsize="20sp">
    </button>
</linearlayout>

    <linearlayout 
android:id="@+id/linearLayout5" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisJumlahTip" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisJumlahTip">
    </textview>
    <textview 
android:id="@+id/tunjukJumlahTip" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="wrap_content" 
android:text="" android:textcolor="#99FF33" 
android:textstyle="bold">
    </textview>
</linearlayout>

    <linearlayout 
android:id="@+id/linearLayout6" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisanJumlahTotal" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisanJumlahTotal">
    </textview>
    <textview 
android:id="@+id/tunjukJumlahTotal" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="wrap_content" android:text="" 
android:textcolor="#99FF33" 
android:textstyle="bold">
    </textview>
</linearlayout>
<linearlayout 
android:id="@+id/linearLayout7" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="fill_parent">
    <textview 
android:id="@+id/tulisanPerOrang" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/tulisanPerOrang">
    </textview>
    <textview 
android:id="@+id/tunjukBerapaPerOrang" 
android:layout_height="wrap_content" 
android:layout_marginleft="10sp" 
android:layout_width="wrap_content" android:text="" 
android:textcolor="#99FF33" 
android:textstyle="bold">
    </textview>
</linearlayout>
</linearlayout>


Untuk melengkapi design UI ini maka sebelum membuat komputasi java, kita selesaikan dulu halaman pelengkap yang bernama strings.xml yang di butuhkan oleh main.xml melalui @strings/

    
    Tip Persentase 
    Besarnya Bill....Rp
    0
    Tipnya Berapa..%
    0
     Berapa Orang......
    0
    Hitung
    Ulang
    Jumlah Tip = 
    Jumlah Total = 
    Per Orang = 

Sampai di sini bentuk UI dan proses menamakan objects yang akan kita butuhkan dalam proses dan cara kerja aplikasi ini sudah selesai. Berikutnya Kita akan membuat sebuah class java yang berguna untuk menterjemahkan kepada komputer tentang apa yang ingin di capai dari aplikasi ini. Silahkan klik di sini untuk melihat class java.

 Summary:
Untuk membuat kalkulator seperti pada gambar di atas di butuhkan 2 file xml  dan 1 file java yaitu

  • main.xml (lihat contoh di atas) 
  • strings.xml (lihat di atas) dan
  • MesinHitung.java (klik disini)