Praktek Mobile Programming 4
Praktek Mobile Programming 4
Gambar 3. 1
Gambar 3.3
4. Ketikkan kode berikut ini. Meskipun panjang, script ini memiliki
kemiripan. Sementara cukup tulis satu pola saja, lakukan
copy-paste-edit.
1: <?xml version="1.0" encoding="utf-8"?>
2: <LinearLayout
3: xmlns:android="http://schemas.android.com/apk/res/android"
4: android:orientation="vertical"
5: android:layout_width="fill_parent"
6: android:layout_height="fill_parent">
7:
8: <LinearLayout
9: android:orientation="horizontal"
10: android:layout_width="fill_parent"
11: android:layout_height="fill_parent"
12: android:id="@+id/LinearLayout1"
13: android:layout_weight="1">
30
14: <TextView
15: android:text="Merah"
16: android:gravity="center_horizontal"
17: android:background="#aa0000"
18: android:layout_height="fill_parent"
19: android:layout_weight="1"
20: android:layout_width="wrap_content"/>
21: <TextView
22: android:text="Hijau"
23: android:gravity="center_horizontal"
24: android:background="#00aa00"
25: android:layout_width="wrap_content"
26: android:layout_height="fill_parent"
27: android:layout_weight="1"/>
28: <TextView
29: android:text="Biru"
30: android:gravity="center_horizontal"
31: android:background="#0000aa"
32: android:layout_width="wrap_content"
33: android:layout_height="fill_parent"
34: android:layout_weight="1"/>
35: <TextView
36: android:text="Kuning"
37: android:gravity="center_horizontal"
38: android:background="#aaaa00"
39: android:layout_width="wrap_content"
40: android:layout_height="fill_parent"
41: android:layout_weight="1"/>
42: </LinearLayout>
43:
44: <LinearLayout
45: android:orientation="vertical"
46: android:layout_width="fill_parent"
47: android:layout_height="fill_parent"
48: android:id="@+id/LinearLayout2"
49: android:layout_weight="1">
50: <TextView
51: android:text="Baris pertama"
52: android:textSize="15pt"
53: android:layout_width="fill_parent"
54: android:layout_height="wrap_content"
55: android:layout_weight="1"/>
56: <TextView
57: android:text="Baris kedua"
58: android:textSize="15pt"
59: android:layout_width="fill_parent"
60: android:layout_height="wrap_content"
61: android:layout_weight="1"/>
62: <TextView
63: android:text="Baris ketiga"
64: android:textSize="15pt"
65: android:layout_width="fill_parent"
66: android:layout_height="wrap_content"
67: android:layout_weight="1"/>
68: <TextView
69: android:text="Baris ke empat"
70: android:textSize="15pt"
71: android:layout_width="fill_parent"
72: android:layout_height="wrap_content"
31
73: android:layout_weight="1"/>
74: </LinearLayout>
75: </LinearLayout>
PENJELASAN PROGRAM
RelativeLayout Sederhana
Gambar 3.5
33
Sudah siap?? Yuk kita mulai!:)
1. Pada Package Explorer, pilih LayoutRelatif > res >
layout > main.xml kemudian tulislah script dibawah ini
1: package contoh.layoutRelatif;
2:
3: import android.app.Activity;
4: import android.os.Bundle;
5:
6: public class RelativeLayoutSederhana extends Activity {
7: /** Called when the activity is first created. */
8: @Override
9: public void onCreate(Bundle savedInstanceState) {
10: super.onCreate(savedInstanceState);
11: setContentView(R.layout.main);
12: }
13: }
Masing-masing widget memiliki id yang untuk atau tidak boleh sama. Id ini
sebagai acuan nama widget, mirip analoginya dengan nama manusia.
Cara kerja TableLayout android sama seperti tabel yang lain, tetapi pada
TableLayout ini dapat menentukan posisi dari masing-masing komponen yang
digunakan, yang penting adalah mengetahui cara TableRow. Jika ada 3 TableRow
berada di dalam TableLayout, maka ukuran dari TableRow itu akan saling
berhubungan. Jika ingin membuat TableRow tidak memiliki hubungan dengan
TableRow yang lain, maka cukup keluarkan TableRow Dari TableLAyout.
File :
main.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:id="@+id/LinearLayout1"
5 android:layout_width="fill_parent"
6 android:layout_height="fill_parent"
7 android:orientation="vertical" >
8
9 <TextView
10 android:id="@+id/textView9"
11 android:layout_width="match_parent"
12 android:layout_height="wrap_content"
13 android:gravity="center"
14 android:text="Tabel Layout & Table Row"
35
15
16 android:textAppearance="?android:attr/textAppearanceLarge"
17 />
18
19
20 <TableLayout
21 android:id="@+id/tableLayout"
22 android:layout_width="match_parent"
23 android:layout_height="wrap_content" >
24
25 <TableRow
26 android:id="@+id/tableRow1"
27 android:layout_width="wrap_content"
28 android:layout_height="wrap_content"
29 android:background="@android:color/darker_gray"
30 android:padding="2dp" >
31
32 <TextView
33 android:id="@+id/textView1"
34 android:layout_width="wrap_content"
35 android:layout_height="wrap_content"
36 android:background="@android:color/black"
37 android:padding="20dp"
38 android:text="A" />
39
40 <TableRow
41 android:id="@+id/tableRow4"
42 android:layout_width="wrap_content"
43 android:layout_height="wrap_content"
44 android:background="@android:color/white"
45 android:padding="2dp" >
46
47 <TextView
48 android:id="@+id/textView5"
49 android:layout_width="wrap_content"
50 android:layout_height="wrap_content"
51
52 android:background="@android:color/black"
53 android:padding="20dp"
54 android:text="B" />
55
56 <TextView
57 android:id="@+id/textView4"
36
58 android:layout_width="wrap_content"
59 android:layout_height="wrap_content"
60
61 android:background="@android:color/darker_gray"
62 android:padding="20dp"
63 android:text="C"
64 android:textColor="@android:color/black"
65 />
66 </TableRow>
67 </TableRow>
68
69 <TableRow
70 android:id="@+id/tableRow2"
71 android:layout_width="wrap_content"
72 android:layout_height="wrap_content"
73 android:background="@android:color/white"
74 android:padding="2dp" >
75
76 <TextView
77 android:id="@+id/textView2"
78 android:layout_width="wrap_content"
79 android:layout_height="wrap_content"
80 android:background="@android:color/black"
81 android:padding="20dp"
82 android:text="D" />
83
84 <TextView
85 android:id="@+id/textView6"
86 android:layout_width="wrap_content"
87 android:layout_height="wrap_content"
88
89 android:background="@android:color/darker_gray"
90 android:padding="20dp"
91 android:text="F"
92 android:textColor="@android:color/black" />
93
94 <TextView
95 android:id="@+id/textView7"
96 android:layout_width="wrap_content"
97 android:layout_height="wrap_content"
98 android:background="@android:color/black"
99 android:padding="20dp"
100 android:text="G" />
37
101
102 <TextView
103 android:id="@+id/textView8"
104 android:layout_width="wrap_content"
105 android:layout_height="wrap_content"
106
107 android:background="@android:color/darker_gray"
108 android:padding="20dp"
109 android:text="H"
110 android:textColor="@android:color/black" />
111 </TableRow>
112
113 <TableRow
114 android:id="@+id/tableRow3"
115 android:layout_width="wrap_content"
116 android:layout_height="wrap_content"
117 android:background="@android:color/darker_gray"
118 android:padding="2dp" >
119
120 <TableRow
121 android:id="@+id/tableRow5"
122 android:layout_width="wrap_content"
123 android:layout_height="wrap_content"
124 android:background="@android:color/white"
125 android:padding="20dp" >
126
127 <TextView
128 android:id="@+id/textView3"
129 android:layout_width="wrap_content"
130 android:layout_height="wrap_content"
131
132 android:background="@android:color/black"
133 android:padding="20dp"
134 android:text="I" />
135 </TableRow>
136 </TableRow>
137 </TableLayout>
138
139 <TextView
140 android:id="@+id/textView10"
141 android:layout_width="match_parent"
142 android:layout_height="wrap_content"
143 android:gravity="center"
38
144 android:paddingTop="50dp"
145 android:text="Table Row"
146
147 android:textAppearance="?android:attr/textAppearanceLarge"
148 />
149
150
151 <TableRow
152 android:id="@+id/tableRow6"
153 android:layout_width="match_parent"
154 android:layout_height="wrap_content"
155 android:background="@android:color/darker_gray" >
156
157 <TextView
158 android:id="@+id/textView11"
159 android:layout_width="wrap_content"
160 android:layout_height="wrap_content"
161 android:background="@android:color/white"
162 android:padding="10dp"
163 android:text="J"
164 android:textColor="@android:color/black" />
165
166 <TextView
167 android:id="@+id/textView12"
168 android:layout_width="wrap_content"
169 android:layout_height="wrap_content"
170 android:background="@android:color/black"
171 android:padding="10dp"
172 android:text="K" />
173
174 <TextView
175 android:id="@+id/textView13"
176 android:layout_width="wrap_content"
177 android:layout_height="wrap_content"
178 android:background="@android:color/white"
179 android:padding="10dp"
180 android:text="L"
181 android:textColor="@android:color/black" />
182 </TableRow>
183
184 <TableRow
185 android:id="@+id/tableRow7"
186 android:layout_width="match_parent"
39
187 android:layout_height="wrap_content"
188 android:background="@android:color/white" >
189
190 <TextView
191 android:id="@+id/textView14"
192 android:layout_width="wrap_content"
193 android:layout_height="wrap_content"
194 android:background="@android:color/black"
195 android:padding="10dp"
196 android:text="M" />
197
<TextView
android:id="@+id/textView15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:padding="10dp"
android:text="N"
android:textColor="@android:color/black" />
</TableRow>
</LinearLayout>
package jhohannes.purba;
1
2
import android.app.Activity;
3
import android.os.Bundle;
4
5
public class MainActivity extends Activity {
6
@Override
7
public void onCreate(Bundle savedInstanceState) {
8
super.onCreate(savedInstanceState);
9
setContentView(R.layout.main);
10
}
11
}
12
Perhatikan juga K dan N, tidak memiliki pengaruh karena tidak ada TableLayout
yang menghubungkan sehingga masing-masing TableRow bekerja sesuai ukuran
masing-masing.
42
Menampilkan Gambar
Gambar 4. 2
1. Jalankan Enclipse, buat Project baru
2. Bikin folder baru dengan nama drawable di folder /res.
Caranya klik kanan folder res > new> folder (Gambar
4.4).
PENJELASAN PROGRAM
Perhatikan main.xml, widget ImageVIew memiliki atribut
android:src=”@drawable/gambar” . Atribut ini digunakan untuk
menunjuk lokasi dimana gambar disimpan, biasanya didalam
folder drawable.
Dengan cara ini, kita tidak perlu mengubah barisan kode
pada tampilanGambar.java karena secara default memanggil
layout XML yang telah kita buat melalui
44
setContentView(R.layout.main).
Sekarang kita akan merubah icon aplikasi sederhana ini
tanpa coding. Perhatikan gambar 4.7
Gambar 4. 8. Icon.png
Gambar 4. 9
45
B. MEMBUAT TEKS AUTOCOMPLETE
Sekarang kita belajar bagaimana caranya membuat teks
autocomplete. Skenarionya, disediakan sebuah editteks sebagi
masukan. Saat Kamu mengetik minimal 3 huruf, secara
otomatis akan muncul rekomendasi kata-kata yang berawalan
dari 3 huruf tadi. Lebih jelasnya perhatikan Gambar 5.1.
Gambar 5.1
Sudah siap ? mari kita mulai!
1. Jalankan Enclipse, buat project baru, isilah parameter
seperti berikut
Project name AutocompleteSederhana
Build Target Android 4.3
Application name Belajar Autocomplete
Package name com.auto.comp
Create Activity AutocompleteSederhana
Min SDK version 18
46
14: android:text="TextView"
15: android:layout_height="wrap_content"
16: android:id="@+id/hasil"></TextView>
17: </LinearLayout>
47
PENJELASAN PROGRAM
Coba perhatikan dulu baris 14, object „edit‟ adalah turunan dari
class AutoCompleteTextView. Object ini merupakan textview
yang bisa diedit kemudian muncul daftar rekomendasi kata
secara otomatis saat proses mengetik berlangsung. Daftar
rekomendasi kata ditampilkan dalam sebuah drop down menu
yang bisa diklik oleh pengguna.
Baris 26, mengaktifkan object „edit‟ supaya bisa menangkap
sinyal ketika user memasukkan sebuah huruf. Sinyal ini
kemudian direspon oleh method-method pada baris 31-43 yaitu
- afterTextChanged()
method ini dipanggil setelah edittext selesai diubah
- beforeTextChanged()
method ini dipanggil sebelum edittext diubah
- onTextChanged()
method ini panggil saat text pada edittext sedang diubah
48
Membuat Kotak Dialog
Dalam sebuah aplikasi, kotak dialog merupakan sarana
interaktif antara user dengan aplikasi itu sendiri. Misalnya jika
kita ingin keluar dari aplikasi, biasanya muncul peringatan berisi
pertanyaan “Are you sure to quit?” dan tersedia tombol “yes” dan
“cancel”. Pada bagian ini, kita mengimplementasikan 3 macam
dialog yaitu
Toast
ListDialog
AlertDialog
49
4: <string name="app_name">Membuat Kotak Dialog</string>
5: <string name="toastTextBtn">Panggil Toast</string>
6: <string name="exitTextBtn">Keluar Applikasi</string>
7: <string name="listDialogTextBtn">Panggil List
Dialog</string>
8: </resources>
46
82: }).show();
83: }
84: }
47
B. PICKER
Dalam android, picker sering dimanfaatkan untuk
melakukan setting tanggal atau jam. Lihat gambar 5.3.
48
18: </LinearLayout>
19:
49
52:
53: Button dayBtn = (Button) findViewById(R.id.dayBtn);
54: dayBtn.setOnClickListener(this);
55: Button timeBtn = (Button) findViewById(R.id.timeBtn);
56: timeBtn.setOnClickListener(this);
57: dateAndTimeLabel = (TextView)
58: findViewById(R.id.dateAndTime);
59: updateLabel();
60: }
61:
62: @Override
63: public void onClick(View v) {
64: // TODO Auto-generated method stub
65: switch (v.getId()) {
66: case R.id.dayBtn:
67: settingTanggal();
68: break;
69: case R.id.timeBtn:
70: setJam();
71: break;
72: }
73: }
74:
75: private void updateLabel() {
76: dateAndTimeLabel.setText(
77: fmtDateAndTime.format(dateAndTime.getTime()));
78: }
79:
80: private void settingTanggal() {
81: new DatePickerDialog(picker.this, d,
82: dateAndTime.get(Calendar.YEAR),
83: dateAndTime.get(Calendar.MONTH),
84: dateAndTime.get(Calendar.DAY_OF_MONTH)).show();
85: }
86:
87: private void setJam() {
88: new TimePickerDialog(picker.this, t,
89: dateAndTime.get(Calendar.HOUR_OF_DAY),
90: dateAndTime.get(Calendar.MINUTE), true).show();
91: }
92: }
PENJELASAN PROGRAM
Kita mulai dari layout main.xml, di bagian ini Kamu
menyiapkan 2 buah button dan sebuah textview. Button
pertama diberi id „dayBtn‟ (baris 13) nanti difungsikan untuk
memanggil picker tanggal, sedangkan button kedua diberi id
„timeBtn‟ (baris 17) nanti dipakai untuk memanggil picker jam.
Sekarang lanjut ke activity picker.java,
DatePickerDialog.onDateSetListener (baris 24) berperan menangkap
informasi setelah user selesai melakukan setting waktu. Pada saat
yang bersamaan, method onDataSet() dipanggil untuk mengupdate
Tahun, bulan, hari, tanggal maupun jam, keudian ditampilkan ke
textview melalui method updateLabel()
50
51