PMO Pertemuan 3 Komponen Aplikasi Android

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 activity yang ditampilkan secara default ketika aplikasi dijalankan. 

  • 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.

  • 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.

  • 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.

Sumber http://www.insinyoer.com/komponen-aplikasi-android/

 

 

Hirarky of srceen element

Menurut definisi pertama di dictionary.com, hierarki didefinisikan sebagai “sistem orang atau benda apa yang berada di peringkat satu di atas yang lain”. Berdasarkan definisi itu, hirarki visual kemudian akan menjadi sistem visual dari elemen peringkat, satu di atas yang lain – atau bagaimana elemen visual menentukan dan berhubungan satu sama lain. Beberapa elemen pada halaman memiliki bobot visual lebih banyak daripada yang lain, elemen ini menarik perhatian mata Anda.

Beberapa komponen yang perlu diperhatikan dalam membuat tampilan sebuah Aplikasi smartphone, diantaranya :

  • Contrast 

Salah satu cara termudah untuk menciptakan hierarki visual dalam tampilan smartphone adalah dengan memanfaatkan elemen yang kontras. Kontras dapat dibangun dengan berbagai cara, namun dasar dasarnya meliputi penggunaan warna, bentuk, ukuran dan hubungan. Kontras adalah tentang menciptakan perbedaan antara elemen yang memungkinkan elemen tertentu lebih menonjol. Umumnya, Anda hanya menginginkan beberapa elemen untuk menarik perhatian pengguna, sementara elemen yang lain tidak diperhatikan maka hanya akan menciptakan kekacauan dan kebingungan user/para pengguna App.

  • Creating Contrast: Color

Warna adalah cara tercepat dan termudah untuk menciptakan kontras pada desain Aplikasi Anda. Anda tidak memiliki banyak layar real estat pada perangkat smartphone (bahkan tablet), jadi penggunaan warna di ponsel bisa menjadi lebih penting. Pada layar Anda memiliki ruang untuk menciptakan hirarki warna dan variasi antar elemen untuk menciptakan kontras yang lebih halus di antara keseluruhan tampilan. Hal ini memungkinkan Anda untuk menghindari kontras tajam yang cenderung cenderung mengganggu dilihat pada mata.

  • Continuance

Continuance dalam desain pada dasarnya untuk mempermudah  pengguna  melihat dari satu elemen ke elemen berikutnya dengan mudah. Sehingga para pengguna dapat merasakan kemudahan dalam melihat dari detail atau informasi yang terdapat pada Smartphone.

 

 

Proses Thread / Android Thread

Dengan semakin umumnya penggunaan chip multicore  pada smartphone, penggunaan thread yang memungkinkan beberapa task berjalan secara paralel semakin penting untuk meningkatkan kinerja app. Multicore sudah disupport Android sejak versi HoneyComb (3.0). Selain itu, app Android yang terlalu lama berproses dan membuat user interface “hang”  akan terkena error ANR (Application Not Responding). Thread dapat digunakan untuk mengatasi ini dengan memindahkan aktivitas yang lama pada thread yang terpisah.

Contoh multithread pada desktop adalah aplikasi Word di Windows. Saat kita membuka Word dan melakukan penyimpanan, kita secara bersamaan masih dapat mengedit dokumen. Kedua aktivitas ini dilakukan oleh aplikasi yang sama tapi dalam thread yang terpisah.

Sebelumnya perlu dibedakan antara thread dan proses. Thread dan proses sama-sama merupakan urutan kode yang dieksekusi. Pada Android, yang dasarnya adalah Linux,  setiap app yang dijalankan berada di proses yang terpisah. Satu proses kemudian dapat memiliki satu atau lebih thread. Thread-thread di dalam proses yang sama berbagi memory, walaupun setiap thread punya register dan stack sendiri. Proses independen satu sama lain, sedangkan thread-thread  pada proses yang sama saling terkait (gambar bawah). 

Kenapa menggunakan thread? karena untuk mengcreate proses besar dari sisi resources dibandingkan thread dan komunikasi antar thread lebih mudah dibandingkan antar proses.  Kasus yang menarik di desktop adalah browser Chrome vs Firefox. Setiap tab pada Chrome menggunakan proses yang berbeda, sedangkan Firefox menggunakan thread yang berbeda untuk setiap tab. Coba lihat task manager saat membuka banyak tab di Chrome, akan banyak proses bernama Chrome.exe.  Pembuat Chrome beralasan dengan arsitektur seperti ini, jika salah satu tab “hang” maka tidak akan mempengaruhi tab yang lain. Tapi efek sampingnya, Chrome membutuhkan lebih banyak memori dibandingkan Firefox. Firefox sebenarnya juga menggunakan multi proses, tapi hanya untuk plugin, karena plugin sering menjadi sumber masalah.

Terlepas dari keunggulannya, penggunaan multithread atau multiproses juga dapat menimbulkan masalah, misalnya sinkronisasi, deadlock, race condition dan  starvation (dipelajari di kuliah sistem operasi). Program juga lebih sulit didebug dan kadang malah kinerjanya lebih jelek.  Walaupun Java dan Android telah menyediakan berbagai library untuk memudahkan pembuatan program multithreading, tetap saja ini bukan hal yang mudah.

Kembali ke Android,setiap saat app dijalankan maka app tersebut memiliki thread utama yang disebut main thread atau UI thread. UI thread ini mengatur tampilan, menerima event dan sebagainya. Aturan yang harus dipegang adalah :

  1. Jangan memblok UI thread.  Misalnya saat user menekan tombol, maka app menjalankan program yang loop sejuta kali sehingga membuat user interface macet. Ini akan berakibat muncul error ANR (App Not Responding). Resources pada smartphone jauh lebih terbatas daripada PC/laptop, sehingga aturan ini lebih ketat.
  2. Jangan mengakses komponen UI di luar UI thread. Misalnya ada thread kedua dan thread ini mengakses TextView, Button dsb. Ini dapat menyebabkan error yang tidak terduga.

 

Sumber : http://indonesiaberkicau.com/android-thread-1-pendahuluan/

 

 

Siklus Hidup Actifity Android

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. Dengan kata lain Activity adalah komponen yang dapat dilihat oleh pengguna, sehingga mereka dapat berinteraksi dengan aplikasi.

Activity memiliki siklus hidup (lifecycle) yang merupakan kondisi yang akan dialami saat dibuat sampai dihapus. Ada beberapa kondisi yang akan dialami oleh Activity diantaranya :

  • onCreate() adalah kondisi awal saat Activity baru diciptakan, biasanya dilakukan inisialisasi pada tahapan ini.
  • onStart() adalah saat Activity dimulai.
  • onResume() adalah saat  Activity  dibuka kembali, biasanya dieksekusi setelah onPause()
  • onPause() akan dipanggil saat ada Activity lain yang terbuka.
  • onStop() adalah kondisi saat Activity tidak ditampilkan dilayar (biasanya saat pengguna menekan tombol Home).
  • onRestart() adalah kondisi saat Activity kembali dibuka oleh pengguna.
  • onDestroy() adalah kondisi saat Activity dihancurkan pada memori.

 

 

Project Strukture

Sebuah proyek dalam Android Studio berisi segala sesuatu yang mendefinisikan workspace Anda untuk aplikasi, dari kode sumber dan aset, hingga kode pengujian dan konfigurasi pembangunan.

Tampilan proyek Android menunjukkan semua file build yang menyusun aplikasi android yang Anda buat. Setiap modul proyek muncul sebagai folder di tingkat atas hirarki proyek dan berisi ketiga elemen ini :

  • Java

Folder java berisi file kode sumber Java dari aplikasi yang diorganisasikan ke dalam paket. Kita bisa memiliki lebih dari satu paket di aplikasi Android. Semua file Activities, Services  dll masuk ke folder ini.

  • manifes /: Manifest

AndroidManifest.xml adalah salah satu file yang paling penting dalam struktur proyek Android. Ini berisi informasi paket, termasuk komponen aplikasi seperti  activities, services, broadcast receivers, content providers, dll.

  • res /: File sumber daya

Res folder adalah tempat semua sumber daya eksternal untuk aplikasi seperti gambar, file XML, string, animasi, file audio dll disimpan.

  • Gradle scripts

Skrip kelas digunakan untuk mengotomatisasi tugas. Untuk sebagian besar, Android Studio melakukan aplikasi yang dibangun di latar belakang tanpa intervensi dari pengembang. Proses build ini ditangani dengan menggunakan sistem Gradle, sebuah toolkit build otomatis yang dirancang untuk memungkinkan cara pembuatan proyek dibangun agar dikonfigurasi dan dikelola melalui seperangkat file konfigurasi build. Ini menggunakan bahasa yang disebut groovy.

Sumber : https://www.journaldev.com/9319/android-studio-project-structure-compiler-proguard

 

 

Struktur XML

Extensible Markup Language (XML) adalah seperangkat aturan untuk mengkodekan dokumen dalam bentuk yang dapat dibaca oleh mesin. XML adalah format populer untuk sharing data di internet.

Berikut adalah contoh dari XML

<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<bus>
<nopol>AA 1987 CC</nopol>
<po>Sumber Makmur</po>
</bus>

Baris pertama merupakan deklarasi XML, Ini mendefinisikan versi XML (1.0) dan pengkodean yang digunakan (ISO-8859-1 = Latin-1/West European character set).

Baris berikutnya menggambarkan root element dari dokumen, seperti mengatakan, dokumen ini adalah tentang bus .

Tiga baris berikutnya menggambarkan child element dari root (nopol dan po).

Dan baris terakhir adalah penutup root.

 Dari dokumen xml tersebut dapat digambarkan bahwa, bus tersebut bernomor polisi AA 1987 CC ,nama bus tersebut adalah Sumber Makmur.

Segala yang ada di dalam aplikasi  mulai dari layout User Interface, string teks, animasi, hingga komunikasi antar proses dengan layanan sistem operasi Android (seperti menggetarkan gadget atau memutar ringtone)  dapat dilakukan via XML. XML memberikan fleksibilitas yang luar biasa untuk mengakomodasi beragam hal di dalam aplikasi, seperti ukuran layar yang berbeda, bahasa, dan rancangan UI.

 

 

Jenis-jenis Layout pada Android Studio

Apa itu Layout ?

Layout adalah sebuah struktur visual yang digunakan untuk antarmuka pengguna. pada Andoid Studio ada 4 Layout, yaitu :

  • Relative Layout

Relative Layout adalah layout yang menampilkan elemen-elemen yang saling berhubungan. Misalnya tombol “OK” posisinya berada dibawah “EditText”, kemudian tombol “cancel” posisinya berada di sebelah kanan tombol “OK” dan dibawah “EditText”. Intinya, saling berkaitan antara posisi satu tombol  dengan yang lain.

  • Linier Layout

Linear layout adalah suatu layout yang biasanya digunakan untuk tampilan statis. Linier Layout menampilkan elemen-elemen view dengan arah linear, vertikal ataupun horizontal.

  • Table Layout

Table Layout adalah layout sederhana yang nantinya posisi dari komponen-komponennya otomatis tertata seperti layaknya tabel pada umumnya.

  • Frame Layout

Layout ini adalah layout yang paling sederhana. Layout ini akan membuat komponen yang ada didalamnya menjadi menumpuk atau saling menutupi satu dengan yang lainnya (layering). Komponen yang paling pertama pada layout ini akan berada dibawah komponen-komponen diatasnya. Pada materi penggunaan fragment di materi sebelumnya, FrameLayout memiliki kemampuan untuk menjadi container untuk fragment-fragment didalam sebuah Activity. Berikut ilustrasi dari penggunaan FrameLayout terhadap child view yang dimiliki didalamnya.

Sumber : http://androidnajwa.blogspot.co.id/2015/08/mengenal-layout-di-android-lengkap.html

 

Mendisain User Interface

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. Dalam mendisain User Interface menggunakan grafis dapat menggunakan beberapa tab seperti di bawah ini :

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

 

Kontrol UI Andoid

Ada sejumlah kontrol UI yang disediakan oleh Android yang memungkinkan Anda membangun antarmuka berbasis grafis untuk aplikasi Anda.

TextView

Kontrol ini digunakan untuk menampilkan teks ke pengguna.

EditText

EditText adalah subclass TextView yang memiliki kemampuan untuk peditan atau dengan kata lain dapat menerima inputing dari pengguna.

AutoCompleteTextView

AutoCompleteTextView adalah tampilan daftar saran penyelesaian dari kalimat yang diketik secara otomatis saat pengguna mengetik.

Button

Button atau tombol push yang bisa ditekan, atau diklik, oleh pengguna untuk melakukan suatu tindakan.

ImageButton

ImageButton sebuah tombol dengan gambar (bukan teks) yang bisa ditekan atau diklik oleh pengguna yang memberikan kesan moderen dari pada buton pada umumnya.

CheckBox

Check box dapat dikatakan sebagai kotak checklist yang dapat untuk  memilih beberapa menu atau pilihan.

ToggleButton

Tombol on / off dengan indikator lampu.

RadioButton

Pada radio button pengguna hanya dapat memilih salah satu dari beberpa menu yang ada.

RadioGroup

RadioGroup digunakan untuk mengelompokkan satu atau beberapa RadioButtons.

ProgressBar

Tampilan ProgressBar memberikan tampilan visual tentang beberapa tugas yang sedang berlangsung kepada user, seperti saat Anda membuka sebuah aplikasi atau sedang meload data.

Spinner

Daftar drop-down yang memungkinkan pengguna memilih satu nilai dari satu set.

TimePicker

Tampilan TimePicker memungkinkan pengguna memilih waktu dalam sehari, baik dalam mode 24 jam maupun mode AM / PM.

DatePicker

Tampilan DatePicker memungkinkan pengguna memilih tanggal hari itu.

 

 

Contoh Program UI Control

Kontrol UI CheckBox Android

Di android, CheckBox adalah tombol yang dapat di centang (ON) atau tidak dicentang (OFF) dan ini akan memungkinkan pengguna untuk memilih  antara kedua opsi (ON / OFF).

Umumnya, kita dapat menggunakan beberapa kontrol CheckBox dalam aplikasi android untuk memungkinkan pengguna memilih satu atau lebih opsi dari kumpulan nilai yang ada.

  • Membuat CheckBox pada File Layout XML

<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent” android:layout_height=”match_parent”>
<CheckBox
android:id=”@+id/chk1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:checked=”true”
android:text=”Java” />

</RelativeLayout>

Jika Anda mengamati cuplikan kode di atas, di sini kami mendefinisikan kontrol CheckBox dan menyetel status Kotak Masuk menggunakan android: mencentang atribut dalam file layout xml.

  • Membuat CheckBox pada File Activity

Di android, kita bisa membuat kontrol CheckBox secara pemrograman dalam file aktivitas berdasarkan kebutuhan kita.Berikut adalah contoh membuat kontrol CheckBox secara dinamis dalam file aktivitas.

LinearLayout layout = (LinearLayout)findViewById(R.id.l_layout);
CheckBox cb = new CheckBox(this);
cb.setText(“Tutlane”);
cb.setChecked(true);
layout.addView(cb);

Berikut contoh program pada XML

activity_main.xml

<?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”>
<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”/>
<CheckBox
android:id=”@+id/chkPython”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:padding=”10dp”
android:layout_marginLeft=”100dp”
android:text=”Python”
android:onClick=”onCheckboxClicked”/>
<CheckBox
android:id=”@+id/chkAndroid”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:padding=”10dp”
android:layout_marginLeft=”100dp”
android:text=”Android”
android:onClick=”onCheckboxClicked”/>
<CheckBox
android:id=”@+id/chkAngular”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:padding=”10dp”
android:layout_marginLeft=”100dp”
android:text=”AngularJS”
android:onClick=”onCheckboxClicked”/>
<Button
android:id=”@+id/getBtn”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_marginLeft=”100dp”
android:text=”Get Details” />
</LinearLayout>

 

Adapun file Presentasi / PPT dapat didownload dengan klik link disamping Unduh File PPT