PERTEMUAN 2 KOMPONEN-KOMPONEN ANd

1.KOMPONEN APLIKASI ANDROID

Komponen aplikasi adalah bagian penting dari sebuah aplikasi Android. Komponen ini harus terhubung dengan AndroidManifest.xml file yang menggambarkan setiap komponen dari aplikasi dan bagaimana mereka berinteraksi.

Ada empat komponen utama yang dapat digunakan dalam aplikasi Android:

A. Activity

Sebuah Activity akan menampilkan antarmuka aplikasi di layar, sebagai contoh ketika kita membuka sebuah aplikasi maka akan muncul tampilan dari aplikasi tersebut.

B. Service

Service adalah komponen yang berjalan di latar belakang. Sebagai contoh, Service bisa memainkan musik di latar belakang saat pengguna berada dalam aplikasi yang berbeda, atau mungkin mengambil data melalui jaringan tanpa menghalangi interaksi pengguna dengan aktivitas.

C. Broadcast Receiver

Broadcast Receiver berfungsi menerima pesan intent dari aplikasi lain atau dari sistem. Sebagai contoh, suatu aplikasi mengirim pesan berisi perintah tertentu untuk aplikasi lain bahwa beberapa data telah diunduh ke perangkat dan tersedia bagi mereka untuk menggunakan apklikasi tersebut, jadi Broadcast Receiver inilah yang akan menangani komunikasi ini dan akan melakukan tindakan yang tepat.Sebuah Broadcast Receiverdiimplementasikan sebagai subclass dari class BroadcastReceiver dan setiap pesan akan dikirim dan diterima sebagai objek Intent.

D.ContentProvider

ContentProvider adalah penyedia konten dari satu aplikasi ke aplikasi lain atas perintah tertentu. Perintah tersebut ditangani oleh sebuah method dari class ContentResolver. Data dapat disimpan dalam sistem file, database atau di tempat lainnya.ContentProviderdiimplementasikan sebagai subclass dari class ContentProvider dan harus menerapkan satu set standar API yang memungkinkan aplikasi lain untuk melakukan transaksi.

2. HIRARCHY

Antarmuka pengguna untuk setiap komponen aplikasi Anda didefinisikan menggunakan hierarki objek view dan view Grup. Setiap kelompok tampilan merupakan kontainer tak terlihat yang mengelola tampilan anak, sementara tampilan anak ini dapat berupa kontrol masukan atau widget lain yang menggambar sebagian dari UI. Pohon hierarki ini bisa sederhana atau bisa juga kompleks sesuai kebutuhan (namun yang sederhana paling baik untuk kinerja).

Untuk mendeklarasikan layout, Anda dapat menyediakan objek view dalam kode dan mulai membangun pohon, namun cara termudah dan terefektif untuk mendefinisikan layout adalah dengan file XML. XML menawarkan struktur layout yang dapat dibaca manusia, serupa dengan HTML.

Nama elemen XML untuk tampilan sesuai dengan kelas Android yang diwakilinya. Dengan demikian elemen <TextView> membuat widget TextView dalam UI Anda, dan elemen <LinearLayout> membuat kelompok tampilan LinearLayout.

3. Proses dan Thread

A. Proses

Sebuah proses, secara umum, adalah serangkaian terus menerus dari tindakan untuk mencapai hasil yang spesifik. Namun, dalam dunia komputer, proses adalah sebuah contoh dari mengeksekusi program komputer. Dengan kata lain, itu adalah konsep dari kejadian tunggal dari program komputer yang berjalan. Proses yang berjalan secara binar akan mengandung satu atau lebih thread.

Menurut jumlah thread yang terlibat dalam proses, ada dua jenis proses. Mereka adalah proses single-thread dan proses multi-thread. Seperti namanya, proses tunggal-thread adalah proses yang hanya memiliki satu thread. Oleh karena itu, thread ini adalah sebuah proses, dan hanya ada satu aktivitas yang terjadi. Dalam proses multi-thread, ada lebih dari satu thread, dan ada lebih dari satu aktivitas yang terjadi.

Dua atau lebih proses dapat berkomunikasi dalam setiap menggunakan komunikasi antar-proses lain. Tapi itu cukup sulit dan membutuhkan lebih banyak sumber daya. Ketika membuat proses baru programmer harus melakukan dua hal. Mereka adalah duplikasi proses induk dan alokasi memori dan sumber daya untuk proses baru. Jadi ini benar-benar mahal.

B. Thread

Dalam dunia IT, thread adalah pelaksanaan instruksi terkecil dari program komputer yang dapat dikelola secara independen sesuai dengan jadwal. Sebuah thread adalah jalan eksekusi sederhana dalam proses. Sebuah thread adalah sebagai proses kuat karena thread bisa melakukan proses apa saja yang bisa dilakukan. Sebuah thread adalah proses ringan dan membutuhkan sumber daya yang lebih sedikit. Thread dapat mulai dari membaca dan menulis ke variabel yang sama dan struktur data variabel. Thread dapat berkomunikasi antara thread dengan mudah.

Hari ini multi-threading telah menjadi pendekatan alami untuk banyak masalah. Sebuah pekerjaan besar dibagi menjadi beberapa bagian dan masing-masing ditugaskan untuk unit eksekusi yang disebut thread. Ini hanya multi-threading. Hal ini memerlukan kehati-hatian pemrograman karena thread berbagi struktur data yang dimodifikasi oleh thread lain pada satu waktu dan juga karena thread berbagi ruang alamat yang sama. Satu keuntungan lebih dari thread adalah bahwa thread menyediakan cara yang efisien dan efektif untuk mencapai paralelisme. Sebuah throughput sistem dapat ditingkatkan dengan membiarkan beberapa thread berjalan pada beberapa prosesor karena thread adalah entitas independen yang dapat dijadwal (schedulable).

Perbedaan antara Proses dan Thread

  • Proses sulit untuk membuat karena membutuhkan duplikasi proses induk dan alokasi memori sedangkan thread lebih mudah untuk membuat karena mereka tidak memerlukan ruang alamat yang terpisah.
  • Thread digunakan untuk tugas-tugas sederhana, sementara proses yang digunakan untuk tugas-tugas yang berat-berat seperti pelaksanaan aplikasi.
  • Proses tidak berbagi ruang alamat yang sama, namun thread dalam berbagi proses yang sama ruang alamat yang sama.
  • Proses yang independen satu sama lain, tetapi thread saling bergantung karena mereka berbagi ruang alamat yang sama.
  • Sebuah proses dapat terdiri dari beberapa thread.
  • Karena thread berbagi ruang alamat yang sama, virtual memori hanya terkait dengan proses tapi tidak dengan thread. Tapi prosesor virtual yang berbeda dikaitkan dengan setiap thread.
  • Setiap proses memiliki kode dan data sendiri sedangkan proses thread berbagi kode yang sama dan data.
  • Setiap proses dimulai dengan thread utama, tapi dapat membuat thread tambahan jika diperlukan.
  • Konteks beralih antara proses jauh lebih lambat dibandingkan konteks beralih antara thread dari proses yang sama.
  • Thread dapat memiliki akses langsung ke segmen data, tetapi proses memiliki salinan sendiri segmen data mereka.
  • roses memiliki overhead tapi tidak thread.

4. Siklus Hidup Activity

Activity adalah suatu kelas yang disediakan oleh Android guna mengimplementasikan siklus hidup suatu kelas-kelas pada suatu aplikasi. Oleh karena itu, kelas Activity wajib diturunkan ke kelas-kelas lain pada aplikasi. Jika kalian masih bingung dengan konsep kelas dan keturunan (inherintance), sebaiknya kalian belajar mengenai bahasa pemograman Java terlebih dahulu karena sesungguhnya pemograman Android berangkat dari bahasa pemograman Java.

Nama kelas yang kita inisiasi adalah StartingPoint yang berada dalam package bernama com.thenewboston.travis.  Package adalah suatu pembungkus atau suatu kemasan yang berisi banyak kelas-kelas. Setelah Activity menurunkan sifat-sifatnya atau dengan kata lain setelah StartingPoint melakukan extends kepada kelas Activity, maka siklus di atas berlaku pula pada kelas StartingPoint. Siklus sesungguhnya berisi dengan masing-masing state yang sebenarnya adalah suatu method yang dimiliki kelas activity .Berikut penjelasan pada masing-masing state  :

  • onCreate()

Method ini dipanggil ketika activity pertama kali dibuat

  • onStart()

Method ini dipanggil ketika sebuah activity tampil ke pengguna

  • onResume()

Method ini dipanggil ketika activity yang berjalan pada saat itu dihentikan sementara (paused) dan activity sebelumnya dijalankan kembali(resumed). (Hasil dari method OnRestart())

  • onFreeze()

Method ini dipanggil ketika activity berada dalam keadaan freeze atau tidak merespon akibat sedang sibuk mengerjakan task tertentu pada sistem

  • onPause()

Method ini dipanggil ketika activity di hentikan sementara (pause) dan berikutnya ketika dijalankan kembali akan berada dalam posisi resume dan memanggil method OnResume()

  • onStop()

Method ini dipanggil ketika activity tidak lagi tampak kepada pengguna

  • onDestroy()

Method ini dipanggil sebelum activity dihancurkan (destroy) oleh sistem (baik secara manual maupun untuk kepentingan pelonggaran memori

  • onRestart()

Method ini dipanggil ketika acitivity dijalankan kembali setelah state Stop

Pada state di atas, kita bebas mendefenisikan method-method terkait seperti contoh pada state start, kita dapat mendefenisikan suatu Splash screen sehingga saat aplikasi baru dimulai, akan menampilkan suatu gambar terlebih dahulu disertai dengan musik lalu masuk ke aplikasi utama. Siklus di atas pun berlangsung terus menerus hingga aplikasi atau activity akhirnya di terminasi.

Konsep siklus ini penting agar developer tidak mengimplementasikan banyak kelas di waktu yang bersamaan yang pastinya memakan banyak sekali memori. Ketika kelas lain aktif, kelas yang tidak berjalan perlu dihentkan sementara agar menghemat penggunaan memori.

5. Project Structure

/manifests

Pada forder ini terdapat file yang bernama AndroidManifest.xml file tersebut sangat penting sekali untuk melakukan konfigurasi dalam pembuatan aplikasi android, di sini lah dimana didefinisikan nama aplikasi, icon aplikasi, semua activity yang ada dalam aplikasi serta permission untuk mengakses hardware maupun resource lainnya.

/java

Pada folder ini terdapat dua folder lagi dengan nama com.packge.aplikasi dan satu lagi com.packge.aplikasi (androidTest) biasanya kita sering bekerja menggunakan folder yang com.packge.aplikasi pada folder ini lah tempat tersimpannya activity atau class yang dibuat, berisi source code java dari aplikasi android. dan ini juga salah satu tempat kerja utama dalam pembuatan aplikasi android.
/res

Pada folder ini terdapat empat folder lagi dengan masing masing nama drawable, layout, mipmap, dan values. Directory resource pada project android, dimana berisi semua resource yang dibutuhkan dalam pembuatan aplikasi android seperti icon, layout, menu, warna, ukuran, string, dimensi, tema, dan lainya. ini juga salah satu tempat kerja yang paling sering dikunjungi ketika pembuatan aplikasi android, bahkan bisa jadi sebagian besar waktu pembuatan dipakai disini.
/res/drawable

Pada folder ini dimana anda dapat meletakan gambar atau icon yang nantinya akan di butuhkan dalam pembuatan aplikasi android.

/res/layout

Pada folder ini dimana anda melakukan atau membuat sebuah tampilan pada peroject aplikasi android, folder ini juga yang paling sering digunakan dalam membuat project aplikasi android.

/res/mipmap

Pada folder ini hampir sama dengan folder drawable namun disini hanya untuk meletakan icon bar untuk project aplikasi android.

/res/values

Pada volder ini dimana anda bisa melakukan perubahan warna tema pada project aplikasi android, dan anda juga bisa membuat string yang di gunakan untuk memberikan judul aplikasi, nama menu, dan lainya.

Itu dia beberapa struktur directory pada project aplikasi android, untuk lebih jelasnya anda bisa lakukan explore kekunaan dari setiap struktur diatas dalam proses development. Struktur di atas itu hanya directory bari bawaan android studio saja ketika anda pertama membuat project baru, tetapi anda juga bisa menambahkanya sesuai yang dibutuhkan.

6. Struktur XML

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.

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.

7. Jenis-Jenis Layout

  • Mondrian Layout : jenis design yang mengacu kepada karya Piet Modrian seorang pelukis asal Belanda, memiliki design yang Asimetris, menggunakan warna dasar merah ,kuning ,biru serta garis hitam sebagai pemisah antar ruangn, unsur gambar di tempatkan dalam bidang segi empat,
  • Axial Layout: Tata letak yang memiliki tampilan visual yang kuat di tengah halaman dengan tampilan element pendukung di sekeliling gambar utama biasanya berupa gambar atau tulisan yang berhubungan dengan tampilan di tengah halaman sebagai titik pusatnya.
  • Picture Window Layout: Tampilan gambar yang besar menjadi ciri utama tata letak ini, dan di ikuti dengan headline ,keterangan gambar hanya memiliki porsi yang kecil
  • Big type Layout : Jenis tata letak yang menggunakan huruf yang besar sebagai unsur utama, gambar yang digunakan hanya berfungsi sebagai unsur pendukung saja.
  • Silhouette Layout : Tata letak tulisan yang mengikuti alur bentuk gambar yang di gunakan menjadi ciri design jenis ini. dan kadang di gunakan juga tampilan negatife gambar (silhouette) untuk menguatkan pesan yang disampaikan.
  • Frame Layout : Menggunakan bingkai sebagai unsur utama design ini, dimana pesan atau gambar utama diletakan di dalam bingkai, atau bingkai tersebut menjadi tema dalam design yang digunakan.
  • Circus Layout : Susunan yang “tidak beraturan” dalam penempatan gambar/tulisan tapi tertata dengan baik, tampilan biasanya berupa banyak gambar produk dalam satu halaman.
  • Rebus Layout : Gambar dan tulisan saling menjalin di dalam design, menggunakan gambar sebagai penggati tulisan.
  • Story Board Layout : sesuai dengan namanya tata letak jenis ini mengandung unsur cerita mengenai pesan yang akan disampaikan,terdiri dari beberapa panel yang simetris, dan tiap gambar dapat di berikan keterangan atau ‘caption’
  • Type Speciment  Layout : Menggunakan Satu macan jenis huruf tertentu [Font].Tulisan diatur sedemikian rupa untuk menampilkan pesan secara visual dan literal. Dan biasanya design jenis ini di dominasi oleh tulisan.

8. Mendesain User Interface / Layout

Di Layout Editor Android Studio, Anda bisa dengan cepat membangun layout dengan menyeret widget ke dalam editor desain visual sebagai ganti menulis XML layout secara manual. Editor ini bisa menampilkan pratinjau layout Anda dalam berbagai versi dan perangkat Android, dan Anda secara dinamis bisa mengubah ukuran layout untuk memastikannya berfungsi dengan baik pada berbagai ukuran layar. Layout Editor sangat berguna saat membangun layout baru dengan ConstraintLayout—pengelola layout yang disediakan dalam pustaka dukungan yang kompatibel dengan Android 2.3 (API level 9) dan yang lebih tinggi.

Layout Editor muncul bila Anda membuka file layout XML region editor adalah seperti berikut:

  • Palette: Menyediakan daftar widget dan layout yang bisa Anda seret ke dalam layout di editor.
  • ComponentTree: Menampilkan hierarki tampilan untuk layout Anda. Klik sebuah item di sini untuk melihatnya dipilih dalam editor.
  • Toolbar: Menyediakan tombol untuk mengonfigurasi penampilan layout di editor dan untuk mengedit properti layout.
  • Design Editor: Menampilkan layout Anda bersama tampilan Design dan Blueprint.
  • Properties: Menyediakan kontrol properti untuk tampilan yang dipilih saat ini.

9. Android UI Controls (Textview, EditText, Radio Button, Checkbox)

Di android ui atau input control adalah komponen interaktif atau View yang digunakan untuk merancang antarmuka pengguna aplikasi. Di android kami memiliki beragam UI atau kontrol masukan yang tersedia, yaitu TextView , EditText , Buttons , Checkbox , Progressbar , Spinners , dll.

Android TextView

Di android, TextView adalah user interface control yang digunakan untuk menampilkan teks ke pengguna.

Android EditText

Di android, EditText adalah kontrol antarmuka pengguna yang digunakan untuk memungkinkan pengguna memasukkan atau memodifikasi teks.

Android AutoCompleteTextView

Di android, AutoCompleteTextView adalah tampilan teks yang dapat diedit yang digunakan untuk menampilkan daftar saran berdasarkan teks pengetikan pengguna.Daftar saran akan ditampilkan sebagai menu tarik-turun dari mana pengguna dapat memilih item untuk mengganti konten kotak teks.

Android Button

Di android, Button adalah user interface control yang digunakan untuk melakukan aksi saat pengguna mengklik atau mengetuknya.

Android Image Button

Di android, Image Button adalah user interface control yang digunakan untuk menampilkan tombol dengan gambar untuk melakukan tindakan saat pengguna mengklik atau mengetuknya.

Umumnya tombol Image di android terlihat sama seperti Button biasa dan melakukan tindakan yang sama seperti tombol biasa tapi hanya bedanya untuk tombol gambar kita akan menambahkan gambar dan bukan teks.

Android Toggle Button

Di android, Toggle Button adalah kontrol antarmuka pengguna yang digunakan untuk menampilkan ON (Checked) atau OFF (Unchecked) states sebagai tombol dengan indikator ringan.

Android Checkbox

Di android, Checkbox adalah dua tombol negara yang bisa dicek atau dicentang.

Android Radio Button

Di android, Radio Button adalah tombol dua negara bagian yang bisa diperiksa atau tidak dicentang dan tidak dapat dicentang setelah dicentang.

Android Radio Group

Di android, Radio Group digunakan untuk mengelompokkan satu atau lebih tombol radio ke dalam kelompok terpisah berdasarkan persyaratan kami.

Jika kita mengelompokkan tombol radio menggunakan grup radio, pada satu waktu hanya satu item yang dapat dipilih dari grup tombol radio.

Android ProgressBar

Di android, ProgressBar adalah kontrol antarmuka pengguna yang digunakan untuk menunjukkan kemajuan suatu operasi.

Android Spinner

Di android, Spinner adalah daftar drop-down yang memungkinkan pengguna memilih satu nilai dari daftar.

Android TimePicker

Di android, TimePicker adalah widget untuk memilih waktu, baik dalam mode 24 jam atau AM / PM.

Android DatePicker

Di android, DatePicker adalah widget untuk memilih tanggal.

10. Contoh Program UI

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”

android:layout_width=”match_parent”
android:layout_height=”match_parent”>
<TextView
android:id=”@+id/fstTxt”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Enter Name” />
<EditText
android:id=”@+id/name”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:ems=”10″/>
<Button
android:id=”@+id/getName”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Get Name” />
</LinearLayout>

Text view

<TextView
android:id=”@+id/textView1″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:text=”Welcome to Tutlane” />

TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText(“Welcome to Tutlane”);

Button

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical” android:layout_width=”match_parent”
android:layout_height=”match_parent”>
<Button
android:id=”@+id/addBtn”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Add”
android:onClick=”addOperation”/>
</LinearLayout>

Edit text

<EditText
android:id=”@+id/editText1″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:text=”Welcome to Tutlane” />

EditText et = (EditText)findViewById(R.id.editText1);
et.setText(“Welcome to Tutlane”);

Spinner

<Spinner
android:id=”@+id/spinner1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignBottom=”@+id/txtVw”
android:layout_toRightOf=”@+id/txtVw” />

Checkbox

<CheckBox
android:id=”@+id/chkJava”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:padding=”10dp”
android:layout_marginTop=”150dp”
android:layout_marginLeft=”100dp”
android:text=”Java”
android:onClick=”onCheckboxClicked”/>

Radio button

<RadioButton
android:id=”@+id/rdbJava”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:padding=”10dp”
android:layout_marginLeft=”100dp”
android:text=”Java”
android:onClick=”onRadioButtonClicked”/>

Download PPT disini

Referensi

https://developer.android.com/guide/topics/ui/overview.html?hl=id

http://android-beginner-lessons.blogspot.co.id/2015/10/android-mengenal-komponen-aplikasi.html

Siklus Hidup Activity Android

http://www.ngulikode.com/2016/01/mengenal-struktur-directory-project.html

Jenis-jenis Design Layout

https://developer.android.com/studio/write/layout-editor.html#intro

http://tutlane.com/tutorial/android/android-ui-controls-textview-edittext-radio-button-checkbox