LAPORAN TUGAS PERTEMUAN 3
PEMROGRAMAN MOBILE 2

Disusun Oleh :
Dafid Abdullah 11.0269 TI 15 F
Riyo Sunarko 11.0270 TI 15 F
Eni Anggraeni 11.0271 TI 15 F
Zulmi Mustaqiem 11.0272 TI 15 F
Iman Setiawan 11.0275 TI 15 F
Rilas Agung P 11.0284 TI 15 F
PROGRAM STUDI TEKNIK INFORMATIKA
STMIK AMIKOM PURWOKERTO
2017/2018
I. Komponen Aplikasi Android
Komponen aplikasi android adalah suatu bagian yang sangat penting dari suatu aplikasi Android karena dengan komponen-komponen inilah suatu aplikasi android dapat berjalan dengan baik. Komponen-komponen ini dikendalikan oleh AndroidManifest.xml yang mendeskripsikan setiap komponen dan bagaimana mereka berinteraksi.
Berikut ini adalah 4 komponen utama yang dapat digunakan dalam sebuah aplikasi Android:
| Komponen | Deskripsi |
| Activities | Suatu komponen yang mengendalikan User Interface dan menangani interaksi pengguna ke layar smart phone. |
| Services | Suatu komponen yang menangani proses di background yang terhubung dengan aplikasi. |
| Broadcast Receivers | Suatu komponen yang menangani komunikasi antara Sistem Operasi Android dengan aplikasi. |
| Content Providers | Suatu komponen yang menangani data dan masalah manajemen basis data. |
Activities
Sebuah activity merepresentasikan sebuah layar dengan User Interface. Dalam artian, activity-lah yang melakukan aksi pada layar, Contohnya: pada facebook, halaman log in adalah sebuah activity lalu news feed setelah Anda log in merupakan activity yang berbeda. Jika sebuah aplikasi memiliki lebih dari 1 activity, maka salah satu dari activity tersebut harus ditAndai sebagai activityyang ditampilkan secara default ketika aplikasi dijalankan.
Sebuah activity dapat diimplementasikan sebagai sebuah subclass dari suatu Activity class dengan cara berikut:
Intent
Intent adalah sebuah pesan yang dapat mengizinkan sebuah aplikasi melakukan sesuatu sesuai intent tersebut. Contohnya: pada facebook Anda, activity yang sedang berjalan adalah News feed dan Anda ingin melihat sebuah gambar yang diposting teman Anda dalam full frame. Melakukan klik pada gambar tersebut akan mengaktifkan View Photo Intent sehingga gambar foto dalam full frame tersebut akan ditampilkan.
Services
Service adalah komponen yang berjalan di background untuk melakukan operasi yang berjalan panjang, Contohnya: sebuah service dapat memainkan music di background sementara pengguna dalam aplikasi yang berbeda atau service dapat mengambil data dalam jaringan tanpa menghalangi interaksi user dengan sebuah activity.
Sebuah service dapat diimplementasikan sebagai sebuah subclass dari Service class dengan cara berikut:
Broadcast Receivers
Broadcast Receivers merespon terhadap pesan broadcast dari aplikasi lain atau dari system, Contohnya: aplikasi juga dapat melakukan broadcast agar aplikasi lain tahu bahwa beberapa aplikasi yang telah di-download ke dalam perangkat dan dapat mereka gunakan. Di sinilah fungsi Broadcast Receivers yang berfungsi mengambil alih komunikasi seperti ini dan menginisiasi aksi yang tepat.
Sebuah Broadcast Receivers dapat diimplementasikan sebagai sebuah subclass dari BroadcastReceiver class dan setiap pesan dikirimkan sebagai Objek Intent dengan cara berikut:
Content Providers
Komponen content provider menyuplai data dari satu aplikasi ke aplikasi lainnya pada saat diminta datanya. Request ini ditangani oleh metode dari kelas Content Resolver. Data nya mungkin dapat disimpan di file system, di database atau di suatu tempat secara keseluruhan.
Sebuah content provider dapat diimplementasikan sebagai sebuah subclass dari ContentProvider class dan harus mengimplementasikan sekumpulan API stAndar yang memungkinkan aplikasi lain untuk melakukan transaksi dengan cara berikut:
Komponen Tambahan
Ada beberapa komponen tambahan yang akan digunakan dalam pembuatan 4 komponen utama di atas, komponen-komponen itu adalah:
| Komponen | Deskripsi |
| Fragments | Merepresentasikan sebuah porsi dari User Interface dalam sebuah Activity. |
| Views | Elemen User Interface yang digambar pada layar seperti tombol, list, formulir, dan lain lain. |
| Layouts | Hierarki dari view yang mengontrol format layar dan tampilan dari view. |
| Intents | Objek pesan yang dapat digunakan untuk meminta aksi dari komponen aplikasi lain. |
| Resources | Elemen eksternal, seperti: string, konstanta dan gambar. |
| Manifest | File Konfigurasi untuk aplikasi. |
II. Hyrarchy Of Screen Element
Hyrarchy Of Screen Element Adalah struktur atau tata letak untuk penyedia view/tampilan pada system android dan dapat membantu menemukan kemacetan kinerja yang disebabkan oleh struktur hierarki pandangan Anda, sehingga membantu menyederhanakan hierarki Ini dan mengurangi penawaran berlebihan .
Halaman ini memberikan pengantar untuk Hirarki Penampil dan panduan untuk memeriksa dan membuat profil tata letak.
Sumber : http://www.insinyoer.com/komponen-aplikasi-android/
https://developer.android.com/studio/profile/hierarchy-viewer.html
https://firdausalibaban.wordpress.com/category/kuliah-mobile-operating-system-android/
III. PROSES THREAD
Bila komponen aplikasi dimulai dan tidak ada komponen aplikasi lain yang berjalan, sistem Android akan memulai proses Linux baru untuk aplikasi dengan satu thread eksekusi. Secara default, semua komponen aplikasi yang sama berjalan dalam proses dan thread yang sama (disebut thread “utama”). Jika komponen aplikasi dimulai dan sudah ada proses untuk aplikasi itu (karena komponen lain dari aplikasi itu sudah ada), maka komponen akan dimulai dalam proses itu dan menggunakan thread eksekusi yang sama. Akan tetapi, Anda bisa mengatur komponen berbeda di aplikasi agar berjalan di proses terpisah, dan Anda bisa membuat thread tambahan untuk setiap proses.
- Proses
Secara default, semua komponen aplikasi yang sama berjalan dalam proses yang sama dan kebanyakan aplikasi tidak boleh mengubah ini. Akan tetapi, jika Anda merasa perlu mengontrol proses milik komponen tertentu, Anda dapat melakukannya dalam file manifes.
Entri manifes untuk setiap tipe elemen komponen—<activity>, <service>, <receiver>, dan <provider>—mendukung atribut android:process yang bisa menetapkan dalam proses mana komponen harus dijalankan. Anda bisa mengatur atribut ini agar setiap komponen berjalan dalam prosesnya sendiri atau agar beberapa komponen menggunakan proses yang sama sementara yang lainnya tidak. Anda juga bisa menyetel android:process agar komponen aplikasi yang berbeda berjalan dalam proses yang sama —sepanjang aplikasi menggunakan ID pengguna Linux yang sama dan ditandatangani dengan sertifikat yang sama.
Elemen <application> juga mendukung atribut android:process, untuk menyetel nilai default yang berlaku bagi semua komponen.
Android bisa memutuskan untuk mematikan proses pada waktu tertentu, bila memori tinggal sedikit dan diperlukan oleh proses lain yang lebih mendesak untuk melayani pengguna. Komponen aplikasi yang berjalan dalam proses yang dimatikan maka sebagai konsekuensinya juga akan dimusnahkan. Proses dimulai kembali untuk komponen itu bila ada lagi pekerjaan untuk mereka lakukan.
Saat memutuskan proses yang akan dimatikan, sistem Android akan mempertimbangkan kepentingan relatifnya bagi pengguna. Misalnya, sistem lebih mudah menghentikan proses yang menjadi host aktivitas yang tidak lagi terlihat di layar, dibandingkan dengan proses yang menjadi host aktivitas yang terlihat. Karena itu, keputusan untuk menghentikan proses bergantung pada status komponen yang berjalan dalam proses tersebut. Aturan yang digunakan untuk menentukan proses yang akan dihentikan diantaranya:
Daur hidup proses
- Proses latar depan
- Proses yang terlihat
- Proses layanan
- Proses latar belakang
- Proses kosong
- Thread
Bila aplikasi diluncurkan, sistem akan membuat thread eksekusi untuk aplikasi tersebut, yang diberi nama, “main”. Thread ini sangat penting karena bertugas mengirim kejadian ke widget antarmuka pengguna yang sesuai, termasuk kejadian menggambar. Ini juga merupakan thread yang membuat aplikasi berinteraksi dengan komponen dari toolkit Android UI (komponen dari paket android.widget dan android.view). Karena itu, thread ‘main’ juga terkadang disebut thread UI.
Sistem ini tidak membuat thread terpisah untuk setiap instance komponen. Semua komponen yang berjalan di proses yang sama akan dibuat instance-nya dalam thread UI, dan sistem akan memanggil setiap komponen yang dikirim dari thread itu. Akibatnya, metode yang merespons callback sistem (seperti onKeyDown() untuk melaporkan tindakan pengguna atau metode callback daur hidup) selalu berjalan di thread UI proses.
Misalnya saat pengguna menyentuh tombol pada layar, thread UI aplikasi akan mengirim kejadian sentuh ke widget, yang selanjutnya menetapkan status ditekan dan mengeposkan permintaan yang tidak divalidasi ke antrean kejadian. Thread UI akan menghapus antrean permintaan dan memberi tahu widget bahwa widget harus menggambar dirinya sendiri.
Saat aplikasi melakukan pekerjaan intensif sebagai respons terhadap interaksi pengguna, model thread tunggal ini bisa menghasilkan kinerja yang buruk kecuali jika Anda mengimplementasikan aplikasi dengan benar. Khususnya jika semua terjadi di thread UI, melakukan operasi yang panjang seperti akses ke jaringan atau kueri database akan memblokir seluruh UI. Bila thread diblokir, tidak ada kejadian yang bisa dikirim, termasuk kejadian menggambar. Dari sudut pandang pengguna, aplikasi seperti hang atau mogok. Lebih buruk lagi, jika thread UI diblokir selama lebih dari beberapa detik (saat ini sekitar 5 detik) pengguna akan ditampilkan dialog “aplikasi tidak merespons” (ANR) yang populer karena reputasi buruknya. Pengguna nanti bisa memutuskan untuk keluar dari aplikasi dan mencopot pemasangan aplikasi jika mereka tidak suka.
Selain itu, toolkit Android UI bukan thread-safe. Jadi, Anda tidak harus memanipulasi UI dari thread pekerja—Anda harus melakukan semua manipulasi pada antarmuka pengguna dari thread UI. Sehingga hanya ada dua aturan untuk model thread tunggal Android:
- Jangan memblokir thread UI
- Jangan mengakses toolkit Android UI dari luar thread UI
Thread pekerja
Karena model thread tunggal yang dijelaskan di atas, Anda dilarang memblokir thread UI demi daya respons UI aplikasi. Jika memiliki operasi untuk dijalankan yang tidak seketika, Anda harus memastikan untuk melakukannya di thread terpisah (thread “latar belakang” atau thread “pekerja”).
Misalnya, berikut ini beberapa kode untuk listener klik yang mengunduh gambar dari thread terpisah dan menampilkannya dalam ImageView:
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
Bitmap b = loadImageFromNetwork(“http://example.com/image.png”);
mImageView.setImageBitmap(b);
}
}).start();
}
Awalnya hal ini tampak bekerja dengan baik, karena menciptakan thread baru untuk menangani operasi jaringan. Akan tetapi, hal tersebut melanggar aturan kedua model thread tunggal: jangan mengakses toolkit Android UI dari luar thread UI—contoh ini memodifikasi ImageView dari thread pekerja sebagai ganti thread UI. Ini bisa mengakibatkan perilaku yang tidak terdefinisi dan tidak diharapkan, yang bisa menyulitkan dan menghabiskan waktu untuk melacaknya.
Untuk memperbaiki masalah ini, Android menawarkan beberapa cara untuk mengakses thread UI dari thread lainnya. Berikut ini daftar metode yang bisa membantu:
Misalnya, Anda bisa memperbaiki kode di atas dengan menggunakan metode View.post(Runnable):
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap bitmap =
loadImageFromNetwork(“http://example.com/image.png”);
mImageView.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(bitmap);
}
});
}
}).start();
}
Kini implementasi ini thread-safe: operasi jaringan dilakukan terpisah dari thread sementara ImageView dimanipulasi dari thread UI.
Akan tetapi, karena operasi semakin kompleks, jenis kode seperti ini bisa semakin rumit dan sulit dipertahankan. Untuk menangani interaksi yang lebih kompleks dengan thread pekerja, Anda bisa mempertimbangkan penggunaan Handlerdi thread pekerja, untuk memproses pesan yang dikirim dari thread UI. Mungkin solusi terbaiknya adalah memperpanjang kelas AsyncTask, yang akan menyederhanakan eksekusi tugas-tugas thread pekerja yang perlu berinteraksi dengan UI.
Menggunakan AsyncTask
Dengan AsyncTask, Anda bisa melakukan pekerjaan asinkron pada antarmuka pengguna. AsyncTask memblokir operasi di thread pekerja kemudian mempublikasikan hasilnya di thread UI, tanpa mengharuskan Anda untuk menangani sendiri thread dan/atau penangan sendiri.
Untuk menggunakannya, Anda harus menjadikan AsyncTask sebagai subkelas dan mengimplementasikan metode callback doInBackground() yang berjalan di pool thread latar belakang. Untuk memperbarui UI, Anda harus mengimplementasikan onPostExecute(), yang mengirim hasil dari doInBackground() dan berjalan di thread UI, jadi Anda bisa memperbarui UI dengan aman. Kemudian Anda bisa menjalankan tugas dengan memanggil execute() dari thread UI.
Misalnya, Anda bisa mengimplementasikan contoh sebelumnya menggunakan AsyncTask dengan cara ini:
public void onClick(View v) {
new DownloadImageTask().execute(“http://example.com/image.png”);
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
/** The system calls this to perform work in a worker thread and
* delivers it the parameters given to AsyncTask.execute() */
protected Bitmap doInBackground(String… urls) {
return loadImageFromNetwork(urls[0]);
}
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
}
}
Kini UI aman dan kode jadi lebih sederhana, karena memisahkan pekerjaan ke dalam bagian-bagian yang harus dilakukan pada thread pekerja dan thread UI.
Anda harus membaca acuan AsyncTask untuk memahami sepenuhnya cara menggunakan kelas ini, namun berikut ini ringkasan singkat cara kerjanya:
- Anda bisa menetapkan tipe parameter, nilai kemajuan, dan nilai akhir tugas, dengan menggunakan generik
- Metode doInBackground()berjalan secara otomatis pada thread pekerja
- onPreExecute(), onPostExecute(), dan onProgressUpdate()semuanya dipanggil pada thread UI
- Nilai yang dikembalikan oleh doInBackground()akan dikirim ke onPostExecute()
- Anda bisa memanggil publishProgress()kapan saja di doInBackground() untuk mengeksekusi onProgressUpdate() pada thread UI
- Anda bisa membatalkan tugas ini kapan saja, dari thread mana saja
Perhatian: Masalah lain yang mungkin Anda temui saat menggunakan thread pekerja adalah mulai ulang tak terduga dalam aktivitas karena perubahan konfigurasi waktu proses (seperti saat pengguna mengubah orientasi layar), yang bisa memusnahkan thread pekerja. Untuk melihat cara mempertahankan tugas selama mulai ulang ini dan cara membatalkan tugas dengan benar saat aktivitas dimusnahkan, lihat kode sumber untuk aplikasi contoh Shelves.
Metode thread-safe
Dalam beberapa situasi, metode yang Anda implementasikan bisa dipanggil dari lebih dari satu thread, dan karena itu harus ditulis agar menjadi thread-safe.
Ini terutama terjadi untuk metode yang bisa dipanggil dari jauh —seperti metode dalam layanan terikat. Bila sebuah panggilan pada metode yang dijalankan dalam IBinder berasal dari proses yang sama di mana IBinder berjalan, metode ini akan dieksekusi di thread pemanggil. Akan tetapi, bila panggilan berasal proses lain, metode akan dieksekusi dalam thread yang dipilih dari kumpulan (pool) thread yang dipertahankan sistem dalam proses yang sama seperti IBinder (tidak dieksekusi dalam thread UI proses). Misalnya, karena metode onBind() layanan akan dipanggil dari thread UI proses layanan, metode yang diimplementasikan dalam objek yang dikembalikan onBind() (misalnya, subkelas yang mengimplementasikan metode PPK) akan dipanggil dari thread di pool. Karena layanan bisa memiliki lebih dari satu klien, maka lebih dari satu pool thread bisa melibatkan metode IBinder yang sama sekaligus. Metode IBinder karenanya harus diimplementasikan sebagai thread-safe.
Penyedia materi juga bisa menerima permintaan data yang berasal dalam proses lain. Meskipun kelas ContentResolver dan ContentProvidermenyembunyikan detail cara mengelola komunikasi antarproses, metode ContentProvider yang merespons permintaan itu—metode query(), insert(), delete(), update(), dan getType()—dipanggil dari pool thread pada proses penyedia materi, bukan thread UI untuk proses tersebut. Mengingat metode ini bisa dipanggil dari thread mana pun sekaligus, metode-metode ini juga harus diimplementasikan sebagai thread-safe.
Komunikasi Antarproses
Android menawarkan mekanisme komunikasi antarproses (IPC) menggunakan panggilan prosedur jauh (PPK), yang mana metode ini dipanggil oleh aktivitas atau komponen aplikasi lain, namun dieksekusi dari jauh (di proses lain), bersama hasil yang dikembalikan ke pemanggil. Ini mengharuskan penguraian panggilan metode dan datanya ke tingkat yang bisa dipahami sistem operasi, mentransmisikannya dari proses lokal dan ruang alamat untuk proses jauh dan ruang proses, kemudian merakit kembali dan menetapkannya kembali di sana. Nilai-nilai yang dikembalikan akan ditransmisikan dalam arah berlawanan. Android menyediakan semua kode untuk melakukan transaksi IPC ini, sehingga Anda bisa fokus pada pendefinisian dan implementasi antarmuka pemrograman PPK.
Untuk melakukan IPC, aplikasi Anda harus diikat ke layanan, dengan menggunakan bindService().
Sumber : https://developer.android.com/guide/components/processes-and-threads.html?hl=id
IV. Siklus Hidup Activity (Activity Lifecycle)
Dalam mengembangkan aplikasi berbasis android, tidak lepas dari yang namanya Activity. Nah, activity ini memiliki siklus hidup (activity lifecycle) dimana tiap terjadi aktivitas, misalnya pindah dari activity satu ke activity lain, menutup aplikasi atau aktivitas lainnya. Perpindahan siklus hidup ini terjadi secara berurutan, dari tahap satu ke tahap lainnya sehingga bisa digambarkan sebagai langkah piramida seperti pada gambar di bawah ini:
Sumber: http://developer.android.com/images/training/basics/basic-lifecycle.png
Method onCreate() dipanggil ketika activity pertama kali dibuat. Method ini tentu sudah tidak asing karena tiap membuat activity, method inilah yang kita panggil untuk menampilkan layout. Setelah method ini dipanggil, selanjutnya diikuti dengan method onStart(), yang dipanggil ketika activity terlihat oleh user. Selanjutnya ketika activity telah benar-benar aktif, method onResume()-lah yang dipanggil. Pada bagian ini activity berada di bagian teratas diantara activity lain.
Selanjutnya, pada saat kita berpindah dari satu activity ke activity lain(2), maka activity pertama tersebut akan memanggil method onPause() dimana activity tetap terlihat, tapi tidak mendapat focus, kemudian diikuti dengan method onStop() dimana activity sudah tidak terlihat, digantikan oleh activity lain(2).
Kemudian ketika kita menutup activity lain(2) tersebut dan kembali ke activity pertama, maka method onRestart() dipanggil, diikuti dengan method onStart() dan onResume().
Ketika kita keluar aplikasi, secara berurutan activity akan memanggil method onPause() -> onStop() -> onDestroy().
Sumber : http://www.erikgunawan.com/android-siklus-hidup-activity-activity-lifecycle/
V. Struktur File Android
Terdapat banyak folder seperti di atas. Anda perlu meluangkan waktu sebentar untuk mengenal dan mengetahui fungsi dan ini masing-masing folder, hal tersebut sangat penting karena semua aplikasi yang anda buat nantinya akan berhubungan dengan susunan folder-folder tersebut.
Untuk penjelasan masing-masing folder di atas sebagai berikut :
- src
Folder yang berisi mainactivity.java saat dibangun pertama kali. Berada dalam peckage ( sesuai dengan yang kita buat). srcberi paket java yan ditulis oleh developer atau diimpor untuk aplikasi. Tiap package bisa memiliki file java yang mempresentasikan class yang berbeda-beda. - gen
Folder yang di-generatesecara otomatis oleh ADT, yang berisi ID untuk mengakses resource aplikasi yang ada pada folder res/. Secara default, sebaiknya anda tidak ubah isi dari file Java yang ada di dalam folder ini. - Android Version
Folder ini menunjukan versi android yang digunakan termasuk file Android.jar pada veri android yang dipakai. - assets
Folder ini secara default isinya kosong. Anda dapat meletakan file aset raw (raw files) yang dapat mendukung jalanya aplikasi. Beberapa file tersebut dapat berupa audio, teks, video, atau ketika berhubungan denga database, maka file-file seperti SQLite dapat diletakan dalam folder ini. - res
Folder ini dapat berisi beragam file, seperti file string, layout, tampilan,dll. pada folder res/ ini terbagi menjadi sub folder yang sudah terstruktur disesuaikan dengan kebutuhan ketika proses coding untuk membangun sebuah aplikasi
- Selain folder – folder di atas, juga terdapat file AndroidManifest dan Project Properties.
File AndroidManifest.xml, merupakan file yang penting, berisi segala informasi penting yang dibutuhkan oleh aplikasi untuk bekerja, antara lain :
* Nama package Java dari aplikasi tersebut.
* Daftar komponen aplikasi.
* Perimission yang dibutuhkan oleh aplikasi untuk mengakses API atau berkomunikasi denga aplikasi lain.
* Minimum level android API yang dibuthkan untuk aplikasi.
* Daftar libraries yang dibutuhkan aplikasi.
* Manifest, yang berisi version code ( merupakan versi code yang kita gunakan untuk membedakan versi aplikasi yang terbaru denga yang lama, hal ini cukup penting karena memberi tahu user apakah ada update terbaru dari aplikasi atau tidak) juga version name ( merupakan versi rilis aplikasi kita).
Sedangkan file Project Properties, menunjukan target platform yang akan digunakan dalam aplikasi ( Android versi berapa). Merupakan file setting pada aplikasi kita sehingga aplikasi tidak akan kebingungan pada target platform yang akan dituju. Hendaknya file ini tidak anda hapus dari aplikasi.
Sumber : http://tipblack.blogspot.co.id/2016/01/struktur-file-android.html
VI. STRUKTUR XML
PENGANTAR XML
Sebelum mulai mempelajari teknik membangun web service, ada baiknya kita memahami konsep dasar XML. Pemahaman tentang XML akan membantu kita untuk lebih mudah memahami apa yang terjadi dibalik web service. Bagi pembaca yang telah memahami konsep dasar XML, dapat melewati bahasan pada bab ini.
Apakah XML Itu ?
XML terletak pada inti web service, yang digunakan untuk mendeskripsikan data. Fungsi utama dari XML adalah komunikasi antar aplikasi, integrasi data, dan komunikasi aplikasi eksternal dengan partner luaran. Dengan standarisasi XML, aplikasi-aplikasi yang berbeda dapat dengan mudah berkomunikasi antar satu dengan yang lain.
XML adalah singkatan dari eXtensible Markup Language. Bahasa markup adalah sekumpulan aturan-aturan yang mendefinisikan suatu sintaks yang digunakan untuk menjelaskan, dan mendeskripsikan teks atau data dalam sebuah dokumen melalui penggunaan tag. Bahasa markup lain yang populer seperti HTML, menggambarkan kepada browser web tentang bagaimana menampilkan format teks, data, dan grafik ke layar komputer ketika sedang mengunjungi sebuah situs web. XML adalah sebuah bahasa markup yang digunakan untuk mengolah meta data (informasi tentang data) yang menggambarkan struktur dan maksud/tujuan data yang terdapat dalam dokumen XML, namun bukan menggambarkan format tampilan data tersebut. XML adalah sebuah standar sederhana yang digunakan untuk medeskrippsikan data teks dengan cara self-describing (deskripsi diri). XML juga dapat digunakan untuk mendefinisikan domain tertentu lainnya, seperti musik, matematika, keuangan dan lain-lain yang menggunakan bahasa markup terstruktur.
Berikut ini adalah contoh sebuah dokumen XML untuk informasi contact person:
<?xml version=”1.0″ encoding=”ISO-8859-1″?><contact>
<contact>
<name>Yadi Utama</name>
<company>PT. Gamatechno Indonesia</company>
<address>Jl. Cik Di Tiro No.34</address>
<city>Yogyakarta</city>
<state>Indonesia</state>
<zip>55284</zip>
<phone>081328462499</phone>
<email>yadi@gamatechno.com</email>
</contact>
Perhatikan bagaimana mudahnya untuk mengerti tentang makna informasi dan strukturnya pada dokumen XML di atas, sehingga juga akan mudah bagi komputer untuk mengerti dokumen XML ini.
Seperti halnya HTML, XML juga menggunakan elemen yang ditandai dengan tag pembuka (diawali dengan ‘<’ dan diakhiri dengan ‘>’), tag penutup(diawali dengan ‘</ ‘diakhiri ‘>’) dan atribut elemen(parameter yang dinyatakan dalam tag pembuka misal <form name=”isidata”>). Hanya bedanya, HTML medefinisikan dari awal tag dan atribut yang dipakai didalamnya, sedangkan pada XML kita bisa menggunakan tag dan atribut sesuai kehendak kita. Berikut ini adalah tampilan dokumen XML di atas apabila dijalankan pada sebuah browser:
Struktur Penulisan Dokumen XML
Berikut ini adalah contoh sebuah struktur dokumen XML:
| Standard Header
|
<?xml version=”1.0″ encoding=”ISO-8859-1″?>
| Elemen root
|
<email>
<to>Andi </to>
| Elemen child
|
<from>Yadi Utama</from>
<subject>Hallo</subject>
<message>Selamat Pagi…</message>
</email>
Baris pertama pada dokumen XML di atas adalah deklarasi standar header yang mendefinisikan versi XML dan karakter encoding yang digunakan dalam dokumen XML. Dalam dokumen ini, XML mengacu pada versi 1.0 dan menggunakan standar encoding karakter set ISO-8859-1 (Latin-1/West European).
Baris selanjutnya menggambarkan elemen induk (root) dokumen “<email>..</email>”, sebagaimana kita menyebut bahwa “Dokumen ini adalah sebuah Email”. Kemudian baris ke 3-6 menggambarkan elemen anak (child) dari elemen induk dokumen.
Tag pada dokumen XML bersifat case sensitif di mana tag pembuka dan tag penutup harus ekivalen. Seperti contoh tag pembuka “<email>” harus ditutup dengan tag “</email>”.
Berikut ini adalah contoh penulisan dokumen XML yang tidak benar:
“<email>….</Email>”
“<email>….</EMAIL>”
“<Email>….</email>”
Berikut ini adalah contoh penulisan dokumen XML yang benar:
“<email>….</email>”
“<EMAIL>….</EMAIL>”
“<Email>….</Email>”
Apa yang Menarik Pada XML?
Karena XML bersifat mudah untuk dibaca dan ditulis baik oleh manusia maupun komputer, maka XML merupakan sebuah format yang dapat digunakan untuk pertukaran data (interchange) antar aplikasi dan platform yang berbeda (platform independent). Metode deskripsi data XML (self-describing) membuatnya menjadi pilihan efektif untuk bisnis ke bisnis, solusi antar jaringan, e-business, dan aplikasi terdistribusi. XML juga bersifat dapat diperluas (extensible), dapat digunakan pada semua bahasa pemrograman, dan datanya dapat ditransfer dengan mudah melalui protokol standar internet seperti HTTP tanpa dibatasi oleh firewall.
Bagaimana XML Dapat Digunakan?
Pada penjelasan sebelumnya, diberikan contoh sebuah dokumen XML yang berisi data contact person yang terdiri dari elemen “name”, “company”, “address”, “city”, “state”, “zip”, “phone”, dan “email”. Tidak seperti HTML, data-data dalam dokumen XML tidak dapat ditampilkan dalam format tampilan tertentu yang kita inginkan dalam browser web. Namun XML dapat dimanipulasi sebagai “pulau data” untuk ditampilkan pada browser web melalui HTML sesuai dengan format tampilan yang diinginkan:
<xml id=”contact-person”>
<contact>
<name>Yadi Utama</name>
<company>PT. Gamatechno Indonesia</company>
<address>Jl. Cik Di Tiro No.34</address>
<city>Yogyakarta</city>
<state>Indonesia</state>
<zip>55284</zip>
<phone>081328462499</phone>
<email>yadi@gamatechno.com</email>
</contact>
</xml>
Dokumen XML ini dapat digabungkan dengan HTML untuk ditampilkan dalam sebuah browser web dengan membangun sebuah tabel dalam kode HTML dan mengasosiasikan nilai pada kolom-kolomnyaa dengan data dari elemen-elemen XML tersebut:
<html>
<body>
<xml id=”contact-person”>
<contact>
<name>Yadi Utama</name>
<company>PT. Gamatechno Indonesia</company>
<address>Jl. Cik Di Tiro No.34</address>
<city>Yogyakarta</city>
<state>Indonesia</state>
<zip>55284</zip>
<phone>081328462499</phone>
<email>yadi@gamatechno.com</email>
</contact>
</xml>
<table border=”1″ datasrc=”#contact-person”>
<tr><th>Name</th> <td><span datafld=”name”></span></td></tr>
<tr><th>Company</th> <td><span datafld=”company”></span></td></tr>
<tr><th>Address</th> <td><span datafld=”address”></span></td></tr>
<tr><th>City</th> <td><span datafld=”city”></span></td></tr>
<tr><th>State</th> <td><span datafld=”state”></span></td></tr>
<tr><th>ZIP</th> <td><span datafld=”zip”></span></td></tr>
<tr><th>Phone</th> <td><span datafld=”phone”></span></td></tr>
<tr><th>Email</th> <td><span datafld=”email”></span></td></tr>
</table>
</body>
</html>
Ketika ditampilkan melalui browser web, Anda akan melihat tampilannya sepeti ini:
Gambar Dokumen XML yang digabung dalam HTML
Tidak hanya itu, jika ada aplikasi URL
dikembangkan mulai tahun 1996 dan mendapatkan pengakuan dari W3C pada bulan Februari 1998. Teknologi yang digunakan pada XML sebenarnya bukan teknologi baru, tapi merupakan turunan dari SGML yang telah dikembangkan pada awal 80-an dan telah banyak digunakan pada dokumentasi teknis proyek-proyek berskala besar. Ketika HTML dikembangkan pada tahun 1990, para penggagas XML mengadopsi bagian paling penting pada SGML dan dengan berpedoman pada pengembangan HTML menghasilkan markup language yang tidak kalah hebatnya dengan SGML.
Seperti halnya HTML, XML juga menggunakan elemen yang ditandai dengan tag pembuka (diawali dengan ‘<’ dan diakhiri dengan ‘>’), tag penutup(diawali dengan ‘</ ‘diakhiri ‘>’) dan atribut elemen(parameter yang dinyatakan dalam tag pembuka misal <form name=”isidata”>). Hanya bedanya, HTML medefinisikan dari awal tag dan atribut yang dipakai didalamnya, sedangkan pada XML kita bisa menggunakan tag dan atribut sesuai kehendak kita. Untuk lebih jelasnya lihat contah dibawah:
<pesan>
<dari>MIS Manager</dari>
<buat>HRD Manager</buat>
<buat>Bagian rekrut</buat>
<buat>Computer Suport team</buat>
<subyek>Permohonan Tenaga kerja baru</subyek>
<isi>Mohon diberikan tenaga kerja baru untuk mengisi lowongan di Departemen MIS</isi>
</pesan>
Pada contoh diatas <pesan>, <dari> <buat>,dan <isi> bukanlah tag standard yang telah di tetapkan dalam XML. Tag-tag itu kita buat sendiri sesuai keinginan kita. Sampai di sini XML tidak melakukan apapun. Yang ada hanyalah informasi yang di kemas dengan tag-tag XML. Kita harus membuat software lagi untuk mengirim, menerima atau menampilkan informasi di dalamnya.
Gambar: Tampilan dokumen XML pada browser
Kenapa Harus Menggunakan XML?
XML untuk saat ini bukan merupakan pengganti HTML. Masing-masing dikembangkan untuk tujuan yang berbeda. Kalau HTML digunakan untuk menampilkan informasi dan berfokus pada bagaimana informasi terlihat, XML mendeskripsikan susunan informasi dan berfokus pada informasi itu sendiri. XML terutama dibutuhkan untuk menyusun dan menyajikan informasi dengan format yang tidak mengandung format standard layaknya heading, paragraph, table dan lain sebagainya.
Sama dengan HTML, File XML berbentuk teks sehingga bila diperlukan kita bisa membacanya tanpa memerlukan bantuan software khusus. Hal ini memudahkan pengembang aplikasi yang menggunakan XML untuk mendebug programnya. XML lebih fleksible dibanding HTML dalam hal kemampuannya menyimpan informasi dan data. Pada XML kita bisa menyimpan data baik dalam atribut maupun sebagai isi elemen yang diletakkan diantara tag pembuka dan tag penutup.
Kelebihan lain yang dimiliki XML adalah bahwa informasi bisa di pertukarkan dari satu system ke system lain yang berbeda platform. Misalnya dari Windows ke Unix, atau dari PC ke Machintosh bahkan dari internet ke handphone dengan teknologi WAP.
Bagian-Bagian dari Dokumen XML
Sebuah dokumen XML terdiri dari bagian bagian yang disebut dengan node. Node-node itu adalah:
- Root node yaitu node yang melingkupi keseluruhan dokumen. Dalam satu dokumen XML hanya ada satu root node. Node-node yang lainnya berada di dalam root node.
- Element node yaitu bagian dari dokumen XML yang ditandai dengan tag pembuka dan tag penutup, atau bisa juga sebuah tag tunggal elemen kosong seperti <anggota nama=”budi”/> . Root node biasa juga disebut root element
- Attribute note termasuk nama dan nilai atribut ditulis pada tag awal sebuah elemen atau pada tag tunggal.
- Text node, adalah text yang merupakan isi dari sebuah elemen, ditulis diantara tag pembuka dan tag penutup
- Comment node adalah baris yang tidak dieksekusi oleh parser
- Processing Instruction node, adalah perintah pengolahan dalam dokumen XML. Node ini ditandai awali dengan karakter <? Dan diakhiri dengan ?>. Tapi perlu diingat bahwa header standard XML <?xml version=”1.0” encoding=”iso-8859-1”?> bukanlah processing instruction node. Header standard bukanlah bagian dari hirarki pohon dokumen XML.
- NameSpace Node, node ini mewakili deklarasi namespace
| Standard Header
|
<?xml version=”1.0” encoding=”iso-8859-1”?>
<!–Dokumen ini menjelaskan tentang isi buku–>
<Buku
Judul=”Teknik Membangun Web Service Dengan Menggunakan SOAP dan WSDL”
Penulis=”Yadi Utama”>
<pengantar/>
<Bab No=”1”>Pengantar XML</Bab>
<Bab No=”2”>Web Service</Bab>
<Bab No=”3”>SOAP</Bab>
.
.
.
</Buku>
| Elemen kosong
|
| Attribute
|
| Comment
|
| Root Node
|
Sintaks XML
Dibandingkan dengan HTML, XML lebih cerewet. Kalau kita menulis sebuah dokumen HTML, beberapa kesalahan penulisan masih ditolerir. Misalnya kita menempatkan tag bersilangan seperti <p><b>Huruf Tebal</p></b> meskipun tidak dianjurkan, HTML masih bisa bekerja dan menampilkan hasil seperti yang kita inginkan. Tidak demikian dengan XML. Lebih jelasnya kita akan bahas di bawah ini tentang bagaimana membuat dokumen XML yang baik.
Sumber : www.unsri.ac.id/upload/arsip/PENGANTAR%20XML.doc
VII. JENIS-JENIS LAYOUT
- Jenis-Jenis Layout
- Linear Layout adalah layout yang menampilkan elemen-elemen view dengan arah linear, vertikal ataupun horizontal. Ini adalah layout paling sederhana di Android.
- Relative Layout adalah layout yang menampilkan elemen-elemen view dalam posisi yang relatif. Posisi dari sebuah view yang dapat diletakkan relatif terhadap posisi elemen view di sekitarnya atau relatif terhadap area layout utama. Sebuah desain tampilan aplikasi bisa dibuat lebih mudah dan sederhana menggunakan RelativeLayout dibandingkan dengan LinearLayout.
- Table Layout adalah layout yang menampilkan elemen view berdasarkan baris dan kolom. Bagi Anda yang telah mempelajari HTML, penggunaan TableLayout disini seperti penggunaan table di HTML yaitu dengan tag <table> dan <tr> serta <td>.
- Grid View adalah layout grid yang biasa digunakan untuk membuat galeri foto.
- Tab Layout adalah layout pada android dengan desain seperti tab.
- List View adalah jenis layout dengan tampilan list.
Sumber : https://www.dumetschool.com/blog/Layout-di-Android
VIII. Mendesain User Interface / Layout
Ada beberapa cara untuk mendesain user interface / layout
- Penggunaan Relative Layout
Layout model ini memungkinkan untuk menentukan letak posisi dari sebuah objek secara fleksibel. Objek dapat diletkkan diberbagai posisi, tentunya masih dalam cakupan layar ponsel Android.
Untuk lebih memberikan efek teratur dan mudah dipahami, menggunakan relative layout sangat disarankan agar setiap objek diberi sebuah ID. Identitas masing-masing objek ini nantinya digunakan untuk menentukan dan memposisikan objek lain. Misalnya :
- Ada sebuah button yang akan diletakkan dibagian tengah layar dan posisinya paling atas, bisa memakai tag android:layout_alignParentTop dengan nilai ‘true‘, berikut adalah contohnya :
Button Parent Top
Script untuk peletakan gambar button adalah sebagai berikut :
<Button
android:id=”@+id/myButton”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_centerHorizontal=”true”
android:layout_centerVertical=”true”
android:layout_alignParentTop=”true”
android:background=”@drawable/my_button” />
Nama id dari button diatas adalah myButton. Pastikan tag button diatas terletak di dalam tag RelativeLayout. Penambahan id myButton akan dipakai sebagai patokan objek lain yang akan diletakkan disamping atau bawah objek myButton.
Kemudian akan diletakkan sebuah button lagi, dan letaknya persis dibawah objek myButton yang sudah dibuat diatas.
Button Below Objek
Source code untuk penambahan button pada posisi diatas adalah sebagai berikut :
<!– Button terletak dibawah button atas –>
<Button
android:id=”@+id/myButtonDua”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_marginTop=”10dp”
android:layout_centerHorizontal=”true”
android:layout_below=”@+id/myButton”
android:background=”@drawable/my_button” />
Tulis kode diatas tepat di bawah wrap tag kode myButton. Untuk objek kedua ini, menamakannya dengan menambah id bernama myButtonDua. Script android:layout_below yang berisi id myButton, artinya objek yang baru saja kita buat akan berada persis di bagian bawah objek id yang ditunjuk.
- Penggunaan Linear Layout
LinearLayout merupakan mode layout di pemrograman XML Android yang memiliki prinsip dasar horizontal dan vertical. Maksudnya adalah layout yang dihasilkan mengikuti orintasi yang didefinisikan pada tag layout. Layouting menggunakan mode Linearlayout akan sangat berguna jika ingin membuat form (misalnya registrasi atau tambah data).
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical” >
<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:paddingTop=”5dp”
android:text=”Nama Anda”
android:textColor=”#37abc8″
android:textStyle=”bold” />
<EditText
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:inputType=”text” />
<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:paddingTop=”5dp”
android:text=”Alamat Anda”
android:textColor=”#37abc8″
android:textSize=”15dp”
android:textStyle=”bold” />
<EditText
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:inputType=”text” />
<Button
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:gravity=”center”
android:padding=”10dp”
android:text=”Simpan” />
</LinearLayout>
Kita bisa melihat Linear Layout diatas memiliki orientasi vertical. Dan untuk membuat masing-masing objek textview dan editText berada berurutan kita menggunakan width layout yang berisi fill_parent. Fill parent dimaksudkan agar objek akan memenuhi panjang dari resolusi layar bidang baris
Sumber :https://mkhuda.com/android/teknik-layouting-user-interface-aplikasi-android/
IX dan X ANDROID UI CONTROL dan CONTOHNYA
Kontrol input adalah komponen interaktif di antarmuka pengguna aplikasi Anda. Android menyediakan berbagai macam kontrol yang dapat Anda gunakan di UI Anda, seperti tombol, bidang teks, bar pencarian, kotak centang, tombol zoom, tombol toggle, dan banyak lagi.
- TextView
TextView menampilkan teks ke pengguna dan secara opsional memungkinkan mereka untuk mengeditnya. TextView adalah editor teks lengkap, namun kelas dasar dikonfigurasi untuk tidak mengizinkan pengeditan.
- EditText
| EditText adalah overlay atas TextView yang mengonfigurasi dirinya agar dapat diedit. Ini adalah subclass TextView yang telah ditentukan yang mencakup kemampuan pengeditan yang kaya.
|
- Button
Button adalah tombol Push yang bisa ditekan, atau diklik, oleh pengguna untuk melakukan suatu tindakan.
- Spinner
Spinner memungkinkan Anda memilih item dari menu drop down
- CheckBox
Checkbox adalah tombol on / off yang dapat dialihkan oleh pengguna. Anda harus menggunakan kotak centang saat menampilkan pengguna dengan sekelompok pilihan yang dapat dipilih yang tidak saling eksklusif.
- RadioButton
RadioButton memiliki dua status: baik dicentang atau tidak dicentang berbentuk bulat. Hal ini memungkinkan pengguna untuk memilih satu opsi dari satu set.
Objek tampilan mungkin memiliki ID unik yang ditugaskan untuk itu yang akan mengidentifikasi tampilan unik di dalam pohon. Sintaks untuk ID, di dalam tag XML adalah
Untuk membuat UI Control / View / Widget Anda harus mendefinisikan view / widget pada file layout dan menetapkannya sebagai ID unik sebagai berikut.
Kemudian akhirnya buat sebuah instance dari objek Control dan tangkap dari layout, gunakan berikut ini
Sumber : https://www.tutorialspoint.com/android/android_user_interface_controls.html