Workshop 3 XML dan Widget
BAB 3
XML LAYOUT, BASIC WIDGET DAN
SELECTION WIDGET
(2)
45
3.1
Tujuan Pembelajaran
1. Memahami tentang pembuatan layout dengan XML pada Android
2. Memahami tentang apa sajakah fitur dari Basic Widget dan Selection Widget
3.2
Dasar Teori
Dalam pembuatan sebuah interface di Android, diperlukan beberapa elemen penting. Diantaranya terdapat sebuah elemen dasar, yaitu Layout. Layout adalah sebuah arsitektur
user interface dalam Activity. Selain layout, terdapat beberapa elemen lainnya, yaitu Basic
Widget dan Selection Widget.
3.2.1
XML Layout
Sebagaimana namanya, layout berbasis XML merupakan sebuah spesifikasi dari hubungan antar widget yang mana container yang dimiliki dikodekan dalam format XML. Secara spesifik, Android menganggap layout berbasis XML sebagai sebuah
resources (sumber daya). Dengan demikian, file-file layout disimpan di dalam
direktori res atau layout di dalam project Android Anda.
Setiap layout XML terdiri dari elemen-elemen tree yang menspesifikasi layout dari widget dan container yang juga menciptakan sebuah hirarki View. Atribut di dalam elemen XML adalah properties, menggambarkan bagaimana sebuah widget seharusnya terlihat atau bagaimana seharusnya container berjalan. Seperti contoh
berikut, jika sebuah elemen button mempunyai nilai atribut dari
android:textStyle=”bold”, itu berarti bahwa teks yang muncul pada button harus
dalam bentuk font tebal.
SDK dari Android melakukan pengiriman dengan sebuah tool (aapt) yang digunakan pada layout. Tool ini otomatis dipanggil oleh toolchain Android Anda (seperti Eclipse, dan sebagainya). Penting untuk diketahui oleh seorang developer bahwa aapt meng-generate R.java source file di dalam project Anda, yang mana
(3)
46 mengijinkan Anda untuk mengakses layout dan widget-widget di dalam layout tersebut secara langsung dari kode Java.
Berikut ini beberapa layout yang dikenal dalam Android : • Frame Layout
Layout ini merupakan layout XML yang paling sederhana. Frame Layout
menyusun child dimulai dari layar kiri atas. Hanya satu view yang ada pada layar.
• Linear Layout
Linear Layout menambahkan masing-masing child pada sebuah garis lurus, baik
itu secara vertikal, maupun horizontal. Vertikal layout mempunyai sebuah child
View per baris, sedangkan horizontal layout mempunyai sebuah baris tunggal View. Layout ini mengijinkan Anda untuk melakukan spesifikasi “weight” dari
masing-masing child View yang mengontrol ukuran relatifnya di dalam space yang tersedia.
• Relative Layout
Dalam menggunakan relative layout, Anda dapat menentukan posisi dari masing-masing child View relatif satu sama lain dan batas-batas layar.
• Table Layout
Tabel layout mengijinkan Anda untuk memodifikasi tata letak menggunakan grid baris dan kolom. Tabel dapat menampung banyak baris dan kolom, dan
kolom dapat diatur untuk shrink or grow. • Absolute Layout
Pada absolute layout, masing-masing posisi child View ditunjukkan dalam koordinat absolut. Dengan menggunakan class ini, Anda dapat menjamin layout yang tepat dari komponen Anda. Dibandingkan dengan manager yang sebelumnya, mendeskripsikan sebuah layout secara absolut berarti bahwa layout yang digunakan tidak bisa secara dinamis menyesuaikan resolusi, maupun orientasi layar yang berbeda
(4)
47 Setiap toolkit GUI memiliki beberapa widget dasar: field, label, button, dan sebagainya. Android toolkit pun tidak berbeda, dan Basic Widget akan memberikan pengenalan yang baik untuk menjelaskan bagaimana ia bekerja di activity-activity dalam Android.
Label
Simple Widget antara lain adalah label, sebagaimana yang dimaksud dalam
Android seperti Text View. Seperti kebanyakan GUI toolkit, label merupakan potongan teks yang tidak dapat diedit langsung oleh user. Biasanya digunakan untuk mengidentifikasi widget yang berdekatan ( seperti, “Name: “ merupakan label dari sebuah field di mana akan diisi sebuah nama.
Di Java, Anda dapat membuat sebuah label dengan membuat sebuah instace
TextView. Pada umumnya, saat Anda membuat label dalam layout XML, dengan
menambahkan sebuah elemen TextView pada layout, dengan sebuah properti dari android:text untuk mengatur nilai dari label tersebut.
Button
Android 1.6 menambahkan sebuah fitur untuk mendeklarasikan sebuah
“on-click” listener untuk button. Sebagai tambahan, pada pendekatan klasik dari
mendefinisikan sebuah object (seperti activity) yang mengimplementasikan
View.OnClickListener interface, Anda dapat mengambil pendekatan sederhana
berikut ini :
• Menentukan sebuah method pada activity Anda yang berisi button yang mengambil sebuah single View parameter, memiliki pengembalian (return)
void, dan berbentuk public.
• Di layout XML, pada elemen button, sertakan android:onClick atribut dengan nama dari method yang didefinisikan di langkah sebelumnya.
(5)
48 Android memiliki dua widget yang bisa disertakan dalam activity, yaitu
ImageView dan ImageButton. Seperti terlihat pada namanya, kedua widget tersebut
merupakan image berbasis TextView dan Button.
Setiap widget memerlukan atribut android:src (pada XML layout) untuk menspesifikasi gambar manakah yang digunakan. Biasanya, referensinnya berupa
drawable resources. Anda juga dapat mengatur konten image berbasis URI dari content provider setimageURI().
3.2.3
Selection Widget
Android menawarkan sebuah framework yang fleksibel untuk menentukan pilihan-pilihan yang tersedia pada beberapa widget. Lebih spesifiknya, Android menawarkan sebuah framework dari data adapter yang menyediakan sebuah
interface umum untuk daftar pemilihan, mulai dari static array, hingga database contents. Selection views merupakan widget untuk merepresentasikan daftar
pilihan-pilihan yang dihandle oleh sebuah adapter untuk menyuplai pilihan-pilihan yang sebenarnya.
RadioButton dan CheckButton merupakan widget yang cocok untuk seleksi
pemilihan dari sebuah set kecil option. Saat kumpulan beberapa pilihan lebih besar ukurannya, maka widget lain yang lebih sesuai adalah listbox, combobox, dropdownlist, picture gallery, dan sebagainya.
(6)
49
Workshop 3
XML Layout dan Basic Widget
A.
Tujuan
1. Memahami macam-macam variasi dari XML Layout
2. Memahami penggunaan dari Basic Widget
B.
Tugas Pendahuluan
1. Pelajari XML Layout dan Basic Widget Android
C.
Percobaan
a.
Percobaan 1: Mengaplikasikan Layout (Relative Layout dan Frame
Layout)
Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml <RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" >
<FrameLayout
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_alignLeft="@+id/lblComments" android:layout_below="@+id/lblComments" android:layout_centerHorizontal="true" >
(7)
50
android:layout_width="fill_parent" android:layout_height="444dp" android:src="@drawable/andro" />
</FrameLayout>
<TextView
android:id="@+id/lblComments" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="Hello Android" /> </RelativeLayout>
Langkah 3: Tambahkan statement huruf tebal pada MainActivity.java Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output sebagai berikut :
Gambar 18 Contoh Tmapilan Relative Layout
b.
Percobaan 2: Mengaplikasikan Layout (Linear Layout)
(8)
51 Langkah 2: Ketikan kode berikut pada main.xml
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context=".MainActivity" >
<TableRow>
<TextView
android:layout_width="120px" android:text="User Name" />
<EditText
android:id="@+id/txtusr" android:width="200px" /> </TableRow>
<TableRow>
<TextView
android:text="Password" />
<EditText
android:id="@+id/txtpass" android:password="true"/>
</TableRow>
<TableRow>
<Button
android:padding="20px" android:id="@+id/btnSign" android:text="Sign In" />
</TableRow>
</TableLayout>
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output sebagai berikut :
(9)
52
Gambar 19 Contoh Tampilan Linear Layout
Langkah 6 : Isikan edit text yang tersedia, maka akan muncul virtual keyboard seperti pada gambar di bawah ini :
(10)
53
Gambar 20 Contoh Tampilan Linear Layout
c.
Percobaan 3 : Mengenal Basic Widget
Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="vertical" >
<Button
android:id="@+id/btnSave"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Save" /> <Button
android:id="@+id/btnOpen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Open" /> <ImageButton
android:id="@+id/img1"
(11)
54 android:layout_height="wrap_content"
android:src="@drawable/emo_im_happy"/> <EditText
android:id="@+id/txtName"
android:layout_width="fill_parent"
android:layout_height="wrap_content" /> <CheckBox
android:id="@+id/chkAutoSave"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="AutoSave" /> <CheckBox
android:id="@+id/star"
style="?android:attr/starStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <RadioGroup
android:id="@+id/rdGp1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" > <RadioButton
android:id="@+id/rdb1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Option1"/> <RadioButton
android:id="@+id/rdb2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Option2" /> </RadioGroup>
<ToggleButton
android:id="@+id/toggle1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> </LinearLayout>
Langkah 3: Buatlah Class MainActivity.java sebagai berikut :
package com.ai.widget;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RadioButton;
import android.widget.RadioGroup;
(12)
55
import android.widget.Toast;
import android.widget.ToggleButton;
public class BasicWidgetActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.main);
//---Button
Button btnOpen = (Button) findViewById(R.id.btnOpen); btnOpen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DisplayToast("You have click the Open button"); }
}); //---Button
Button btnSave = (Button) findViewById(R.id.btnSave); btnSave.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DisplayToast("You have click the Save Button"); }
});
CheckBox checkBox = (CheckBox)findViewById(R.id.chkAutoSave); checkBox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (((CheckBox)v).isChecked())
DisplayToast("Chekbox is checked"); else
DisplayToast("Checkbox is unchecked"); }
});
RadioGroup radioGroup = (RadioGroup)findViewById(R.id.rdGp1); radioGroup.setOnCheckedChangeListener(new
OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int
checkedId) {
// TODO Auto-generated method stub
RadioButton rb1 = (RadioButton)findViewById(R.id.rdb1);
if (rb1.isChecked()) {
DisplayToast("Option 1 is checked"); }
else{
DisplayToast("Option 2 is checked");
} }
(13)
56
});
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggle1);
toggleButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) {
if (((ToggleButton)v).isChecked())
DisplayToast("Toggle button is On"); else
DisplayToast("Toggle button is Off"); }
}); }
private void DisplayToast(String msg) { Toast.makeText(getBaseContext(), msg, Toast.LENGTH_SHORT).show();
} }
Langkah 4 :Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output sebagai berikut :
Langkah 6 : Lakukan action pada masing-masing widget, maka akan muncul toast message :
(14)
(15)
(1)
53
Gambar 20 Contoh Tampilan Linear Layout
c.
Percobaan 3 : Mengenal Basic Widget
Langkah 1: Buat project Android baru pada Eclipse
Langkah 2: Ketikan kode berikut pada main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <Button
android:id="@+id/btnSave"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Save" /> <Button
android:id="@+id/btnOpen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Open" /> <ImageButton
android:id="@+id/img1"
(2)
54
android:layout_height="wrap_content"android:src="@drawable/emo_im_happy"/> <EditText
android:id="@+id/txtName"
android:layout_width="fill_parent"
android:layout_height="wrap_content" /> <CheckBox
android:id="@+id/chkAutoSave"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="AutoSave" /> <CheckBox
android:id="@+id/star"
style="?android:attr/starStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <RadioGroup
android:id="@+id/rdGp1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" > <RadioButton
android:id="@+id/rdb1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Option1"/> <RadioButton
android:id="@+id/rdb2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Option2" /> </RadioGroup>
<ToggleButton
android:id="@+id/toggle1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> </LinearLayout>
Langkah 3: Buatlah Class MainActivity.java sebagai berikut :
package com.ai.widget; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener;(3)
55
import android.widget.Toast;import android.widget.ToggleButton;
public class BasicWidgetActivity extends Activity { @Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//---Button
Button btnOpen = (Button) findViewById(R.id.btnOpen); btnOpen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DisplayToast("You have click the Open button"); }
}); //---Button
Button btnSave = (Button) findViewById(R.id.btnSave); btnSave.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DisplayToast("You have click the Save Button"); }
});
CheckBox checkBox = (CheckBox)findViewById(R.id.chkAutoSave); checkBox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (((CheckBox)v).isChecked())
DisplayToast("Chekbox is checked"); else
DisplayToast("Checkbox is unchecked"); }
});
RadioGroup radioGroup = (RadioGroup)findViewById(R.id.rdGp1); radioGroup.setOnCheckedChangeListener(new
OnCheckedChangeListener() { @Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
RadioButton rb1 = (RadioButton)findViewById(R.id.rdb1);
if (rb1.isChecked()) {
DisplayToast("Option 1 is checked"); }
else{
DisplayToast("Option 2 is checked"); }
(4)
56
});
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggle1);
toggleButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) {
if (((ToggleButton)v).isChecked())
DisplayToast("Toggle button is On"); else
DisplayToast("Toggle button is Off"); }
}); }
private void DisplayToast(String msg) { Toast.makeText(getBaseContext(), msg, Toast.LENGTH_SHORT).show();
} }
Langkah 4 :Tekan F11 untuk mendebug aplikasi pada emulator Android
Langkah 5: Kemudian, akan muncul output sebagai berikut :
Langkah 6 : Lakukan action pada masing-masing widget, maka akan muncul
toast message :
(5)
(6)