- 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. |
Komponen Aplikasi Android
July 5, 2015 By julio anthony ~ Leave a comment
Share to : Google Facebook Twitter Linkedin Print
Gambar 1 – Komponen Aplikasi Android (www.androidtechies.com)
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.
Gambar 2 – Activity (www.androidtechies.com)
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.
Gambar 3- Intent (www.androidtechies.com)
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:
Kita akan mempelajari bahan-bahan ini lebih detail lagi dalam sub-bab selanjutnya. Dalam sub-bab komponen aplikasi android ini khusus untuk mempelajari komponen aplikasi android secara garis besar.
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. |
Jika artikel ini bermanfaat buat Anda, mohon untuk di Share because “Sharing is Caring”
- Hirarchy of Screen Element ?
Ringkasan Dukungan Layar
Bagian ini menyediakan ringkasan mengenai dukungan Android untuk multilayar, termasuk: pengantar untuk istilah dan konsep yang digunakan dalam dokumen ini serta dalam API, rangkuman konfigurasi layar yang didukung sistem, dan ringkasan mengenai API serta fitur kompatibilitas layar yang mendasarinya.
Istilah dan konsep
Ukuran layar
Ukuran fisik sesungguhnya, yang diukur sebagai diagonal layar.
Untuk penyederhanaan, Android mengelompokkan semua ukuran layar sesungguhnya ke dalam empat ukuran umum: kecil, normal, besar, dan ekstra besar.
Kepadatan layar
Jumlah piksel dalam area fisik layar; biasa disebut sebagai dpi (dot per inci). Misalnya, layar berkepadatan “rendah” memiliki piksel lebih sedikit dalam area fisik yang diberikan, dibandingkan layar berkepadatan “normal” atau “tinggi”.
Untuk penyederhanaan, Android mengelompokkan semua kepadatan layar sesungguhnya ke dalam enam kepadatan umum: rendah, medium, tinggi, ekstra-tinggi, ekstra-ekstra-tinggi, dan ekstra-ekstra-ekstra-tinggi.
Orientasi
Orientasi layar dari sudut pandang pengguna. Orientasi ini bisa berupa lanskap atau potret, berarti masing-masing rasio aspek layar bisa berupa melebar atau meninggi. Ketahuilah bahwa secara default tidak hanya melakukan pengoperasian perangkat berbeda dalam orientasi berbeda, melainkan orientasi bisa berubah pada waktu proses bila pengguna memutar perangkat.
Resolusi
Total jumlah piksel fisik di layar. Saat menambahkan dukungan untuk multilayar, aplikasi tidak menangani resolusi secara langsung; aplikasi hanya perlu memperhatikan ukuran dan kepadatan layar, sebagaimana ditetapkan oleh kelompok kepadatan dan ukuran umum.
Piksel berkepadatan independen (dp)
Satuan piksel virtual yang harus Anda gunakan saat mendefinisikan layout UI, untuk menyatakan dimensi layout atau posisi dengan cara yang tidak bergantung pada kepadatan.
Piksel berkepadatan independen sama dengan satu piksel fisik pada layar 160 dpi, yang merupakan kepadatan patokan yang diasumsikan oleh sistem untuk layar kepadatan “medium”. Pada waktu proses, sistem secara transparan menangani penskalaan satuan dp, bila diperlukan, berdasarkan kepadatan sesungguhnya dari layar yang digunakan. Konversi satuan dp ke piksel layar adalah sederhana: px = dp * (dpi / 160). Misalnya, pada layar 240 dpi, 1 dp sama dengan 1,5 piksel fisik. Anda harus selalu menggunakan satuan dp saat mendefinisikan UI aplikasi Anda untuk memastikan UI Anda ditampilkan dengan benar di layar yang memiliki kepadatan berbeda.
Ragam layar yang didukung
Mulai Android 1.6 (API Level 4), Android menyediakan dukungan untuk kepadatan dan ukuran layar yang beragam, yang mencerminkan banyak konfigurasi layar berbeda yang mungkin dimiliki perangkat. Anda bisa menggunakan fitur sistem Android untuk mengoptimalkan antarmuka pengguna aplikasi untuk setiap konfigurasi layar dan memastikan aplikasi Anda tidak hanya dirender, juga menyediakan pengalaman pengguna yang sebaik mungkin di setiap layar.
Untuk menyederhanakan cara mendesain antarmuka pengguna Anda bagi multilayar, Android membagi rentang kepadatan dan ukuran layar sesungguhnya ke dalam:
- Ada empatukuran umum: kecil, normal, besar, dan ekstra besar
Catatan: Mulai Android 3.2 (API level 13), kelompok ukuran ini tidak digunakan lagi karena sudah ada teknik baru untuk mengelola ukuran layar berdasarkan lebar layar yang tersedia. Jika Anda sedang mengembangkan untuk Android 3.2 dan yang lebih baru, lihat Mendeklarasikan Layout Tablet untuk Android 3.2 untuk informasi selengkapnya.
- Ada enamkepadatan umum:
- ldpi(rendah) ~120 dpi
- mdpi(medium) ~160 dpi
- hdpi(tinggi) ~240 dpi
- xhdpi(ekstra-tinggi) ~320 dpi
- xxhdpi(ekstra-ekstra-tinggi) ~480 dpi
- xxxhdpi(ekstra-ekstra-ekstra-tinggi) ~640 dpi
Ukuran dan kepadatan umum membentuk suatu konfigurasi patokan yakni ukuran normal dan kepadatan mdpi (medium). Patokan ini berdasarkan pada konfigurasi layar untuk perangkat Android yang pertama, yakni T-Mobile G1, yang memiliki layar HVGA (hingga Android 1.6, inilah satu-satunya konfigurasi layar yang didukung oleh Android).
Setiap kepadatan dan ukuran umum meliputi serangkaian kepadatan dan ukuran layar sesungguhnya. Misalnya, dua perangkat yang melaporkan ukuran layar normal mungkin memiliki ukuran layar sesungguhnya dan rasio aspek yang sedikit berbeda bila diukur secara manual. Begitu pula, dua perangkat yang melaporkan kepadatan layar hdpi mungkin memiliki kepadatan piksel sebenarnya yang sedikit berbeda. Android membuat abstrak perbedaan ini pada berbagai aplikasi, jadi Anda bisa menyediakan UI yang didesain untuk kepadatan dan ukuran umum dan memungkinkan sistem menangani penyesuaian akhir bila diperlukan. Gambar 1 mengilustrasikan bagaimana ukuran dan kepadatan yang berbeda dikelompokkan secara kasar ke dalam beberapa kelompok kepadatan dan ukuran yang berbeda pula.
Gambar 1. Ilustrasi mengenai bagaimana Android secara kasar memetakan ukuran dan kepadatan sesungguhnya ke beberapa ukuran dan kepadatan umum (angkanya tidak persis sama).
- Proses Thread
Proses dan 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.
Dokumen ini membahas cara kerja proses dan thread di aplikasi Android.
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 dibahas di bawah ini.
Daur hidup proses
Sistem Android mencoba mempertahankan proses aplikasi selama mungkin, namun pada akhirnya perlu membuang proses lama untuk mengambil kembali memori bagi proses baru atau yang lebih penting. Untuk menentukan proses yang akan dipertahankan dan yang harus dimatikan, sistem menempatkan setiap proses ke dalam “hierarki prioritas” berdasarkan komponen yang berjalan dalam proses dan status komponen tersebut. Proses yang memiliki prioritas terendah akan dimatikan terlebih dahulu, kemudian yang terendah berikutnya, dan seterusnya, jika perlu untuk memulihkan sumber daya sistem.
Ada lima tingkatan dalam hierarki prioritas. Daftar berikut berisi beberapa tipe proses berdasarkan urutan prioritas (proses pertama adalah yang terpenting dan dimatikan terakhir):
- Proses latar depan
Proses yang diperlukan untuk aktivitas yang sedang dilakukan pengguna. Proses dianggap berada di latar depan jika salah satu kondisi berikut terpenuhi:
- Proses menjadi host Activityyang berinteraksi dengan pengguna dengan (Activity dengan metode onResume() telah dipanggil).
- Proses menjadi host Serviceyang terikat dengan aktivitas yang sedang berinteraksi dengan pengguna.
- Proses menjadi host Serviceyang berjalan “di latar depan”— layanan telah memanggilstartForeground().
- Proses menjadi host Serviceyang menjalankan salah satu callback daur hidupnya (onCreate(), onStart(), atau onDestroy()).
- Proses menjadi host BroadcastReceiveryang menjalankan metode onReceive().
Secara umum, hanya ada beberapa proses latar depan pada waktu yang diberikan. Proses dimatikan hanya sebagai upaya terakhir— jika memori hampir habis sehingga semuanya tidak bisa terus berjalan. Pada umumnya, pada titik itu, perangkat dalam status memory paging, sehingga menghentikan beberapa proses latar depan diperlukan agar antarmuka pengguna tetap responsif.
- Proses yang terlihat
Proses yang tidak memiliki komponen latar depan, namun masih bisa memengaruhi apa yang dilihat pengguna di layar. Proses dianggap terlihat jika salah satu kondisi berikut terpenuhi:
- Proses ini menjadi host Activityyang tidak berada di latar depan, namun masih terlihat oleh pengguna (metode onPause() telah dipanggil). Ini bisa terjadi, misalnya, jika aktivitas latar depan memulai dialog, sehingga aktivitas sebelumnya terlihat berada di belakangnya.
- Proses menjadi host Serviceyang terikat dengan aktivitas yang terlihat (atau latar depan)
Proses yang terlihat dianggap sangat penting dan tidak akan dimatikan kecuali jika hal itu diperlukan agar semua proses latar depan tetap berjalan.
- Proses layanan
Proses yang menjalankan layanan yang telah dimulai dengan metode startService() dan tidak termasuk dalam salah satu dari dua kategori yang lebih tinggi. Walaupun proses pelayanan tidak langsung terkait dengan semua yang dilihat oleh pengguna, proses ini umumnya melakukan hal-hal yang dipedulikan pengguna (seperti memutar musik di latar belakang atau mengunduh data di jaringan), jadi sistem membuat proses tetap berjalan kecuali memori tidak cukup untuk mempertahankannya bersama semua proses latar depan dan proses yang terlihat.
- Proses latar belakang
Proses yang menampung aktivitas yang saat ini tidak terlihat oleh pengguna (metode onStop() aktivitas telah dipanggil). Proses ini tidak memiliki dampak langsung pada pengalaman pengguna, dan sistem bisa menghentikannya kapan saja untuk memperoleh kembali memori bagi proses latar depan, proses yang terlihat, atau proses layanan. Biasanya ada banyak proses latar belakang yang berjalan, sehingga disimpan dalam daftar LRU (least recently used atau paling sedikit digunakan) untuk memastikan bahwa proses dengan aktivitas yang paling baru terlihat oleh pengguna sebagai yang terakhir untuk dimatikan. Jika aktivitas mengimplementasikan metode daur hidupnya dengan benar, dan menyimpan statusnya saat ini, menghentikan prosesnya tidak akan memiliki efek yang terlihat pada pengalaman pengguna, karena ketika pengguna kembali ke aktivitas, aktivitas itu memulihkan semua statusnya yang terlihat. Lihat dokumen Aktivitas untuk mendapatkan informasi tentang menyimpan dan memulihkan status.
- Proses kosong
Sebuah proses yang tidak berisi komponen aplikasi aktif apa pun. Alasan satu-satunya mempertahankan proses seperti ini tetap hidup adalah untuk keperluan caching, meningkatkan waktu mulai (startup) bila nanti komponen perlu dijalankan di dalamnya. Sistem sering menghentikan proses ini untuk menyeimbangkan sumber daya sistem secara keseluruhan antara proses cache dan cache kernel yang mendasarinya.
Android sebisa mungkin memeringkat proses setinggi mungkin, berdasarkan prioritas komponen yang sedang aktif dalam proses. Misalnya, jika suatu proses menjadi host sebuah layanan dan aktivitas yang terlihat, proses akan diperingkat sebagai proses yang terlihat, bukan sebagai proses layanan.
Selain itu, peringkat proses dapat meningkat karena adanya proses lain yang bergantung padanya —proses yang melayani proses lain tidak bisa diperingkat lebih rendah daripada proses yang sedang dilayaninya. Misalnya, jika penyedia materi dalam proses A melayani klien dalam proses B, atau jika layanan dalam proses A terikat dengan komponen dalam proses B, proses A selalu dipertimbangkan sebagai paling rendah prioritasnya dibandingkan dengan proses B.
Karena proses yang menjalankan layanan diperingkat lebih tinggi daripada aktivitas latar belakang, aktivitas yang memulai operasi yang berjalan lama mungkin lebih baik memulai layanan untuk operasi itu, daripada hanya membuat thread pekerja—khususnya jika operasi mungkin akan berlangsung lebih lama daripada aktivitas. Misalnya, aktivitas yang mengunggah gambar ke situs web harus memulai layanan untuk mengunggah sehingga unggahan bisa terus berjalan di latar belakang meskipun pengguna meninggalkan aktivitas tersebut. Menggunakan layanan akan memastikan operasi paling tidak memiliki prioritas “proses layanan”, apa pun yang terjadi pada aktivitas. Ini menjadi alasan yang sama yang membuat penerima siaran harus menjalankan layanan daripada hanya menempatkan operasi yang menghabiskan waktu di thread.
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
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):
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:
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(). Untuk informasi selengkapnya, lihat panduan developer Layanan.
- siklus hidup activity
Android: Siklus Hidup Activity (Activity Lifecycle)
March 3, 2015 Erik Gunawan Android
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:
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().
- projek structure
Ringkasan Proyek
Dalam dokumen ini
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. Bila Anda memulai proyek baru, Android Studio akan membuat struktur yang diperlukan untuk semua file dan membuatnya terlihat di jendela Project di sebelah kiri IDE (klik View > Tool Windows > Project). Laman ini menyediakan ringkasan komponen utama di dalam proyek Anda.
Modul
Sebuah modul adalah kumpulan file sumber dan setelan pembangunan yang memungkinkan Anda membagi proyek ke dalam beberapa unit fungsionalitas diskret. Proyek Anda bisa memiliki satu atau beberapa modul dan satu modul dapat menggunakan modul lain sebagai dependensi. Setiap modul bisa dibangun, diuji, dan di-debug secara independen.
Modul tambahan sering kali berguna saat membuat pustaka kode dalam proyek sendiri atau bila Anda ingin membuat set kode dan sumber daya lain untuk beragam tipe perangkat, misalnya ponsel dan perangkat yang dapat dikenakan, namun menyimpan semua file cakupan dalam proyek yang sama dan berbagi sebagian kode.
Anda bisa menambahkan modul baru ke proyek dengan mengeklik File > New > New Module.
Android Studio menawarkan beberapa tipe modul yang khas:
Modul aplikasi Android
Menyediakan kontainer untuk kode sumber aplikasi Anda, file sumber daya, dan setelan level aplikasi misalnya file pembangunan level-modul dan file manifes Android. Bila Anda membuat proyek baru, nama modul default adalah “app”.
Di jendela Create New Module, Android Studio menawarkan modul aplikasi berikut:
- Phone & Tablet Module
- Android Wear Module
- Android TV Module
- Glass Module
Masing-masing menyediakan file esensial dan beberapa template kode yang sesuai untuk aplikasi atau tipe perangkat yang bersangkutan.
Untuk informasi selengkapnya mengenai penambahan modul, baca Menambahkan Modul untuk Perangkat Baru.
Modul pustaka
Menyediakan kontainer untuk kode yang bisa digunakan kembali, yang bisa Anda gunakan sebagai dependensi dalam modul aplikasi lain atau diimpor ke dalam proyek lain. Secara struktural, modul pustaka sama seperti modul aplikasi, namun bila telah dibangun, akan membuat file arsip kode sebagai ganti APK, jadi tidak bisa dipasang di perangkat.
Di jendela Create New Module, Android Studio menawarkan modul pustaka berikut:
- Pustaka Android: Tipe pustaka ini bisa berisi semua jenis file yang didukung dalam proyek Android, termasuk kode sumber, sumber daya, dan file manifes. Hasil pembangunannya adalah sebuah file Android Archive (AAR) yang bisa Anda tambahkan sebagai dependensi bagi modul aplikasi Android.
- Pustaka Java: Tipe pustaka ini hanya bisa berisi file sumber Java. Hasil pembangunannya adalah sebuah file Java Archive (JAR) yang bisa Anda tambahkan sebagai dependensi bagi modul aplikasi Android atau proyek Java lainnya.
Modul Google Cloud
Menyediakan kontainer untuk kode backend Google Cloud Anda. Modul ini menambahkan kode dan dependensi yang diperlukan untuk backend Java App Engine yang menggunakan HTTP biasa, Cloud Endpoints, dan Cloud Messaging untuk menghubungkan ke aplikasi Anda. Anda bisa mengembangkan backend untuk menyediakan layanan awan yang dibutuhkan aplikasi Anda.
Penggunaan Android Studio untuk membuat dan mengembangkan modul Google Cloud memungkinkan Anda mengelola kode aplikasi dan kode backend dalam proyek yang sama. Anda juga bisa menjalankan dan menguji kode backend secara lokal, dan menggunakan Android Studio untuk menerapkan modul Google Cloud.
Untuk informasi selengkapnya mengenai penambahan modul Google Cloud, lihat Menambahkan Modul App Engine Java Servlet. Untuk informasi selengkapnya mengenai menjalankan dan menerapkan modul Google Cloud, lihat Menjalankan, Menguji, dan Menerapkan Backend.
sebagian orang juga merujuk modul sebagai sub-proyek dan itu boleh saja, karena Gradle juga merujuk modul sebagai proyek. Misalnya, bila Anda membuat modul pustaka dan ingin menambahkannya sebagai dependensi ke modul aplikasi Android, Anda harus mendeklarasikannya seperti berikut:
File Proyek
Secara default, Android Studio menampilkan file proyek Anda dalam tampilan Android. Tampilan ini tidak mencerminkan hierarki file sesungguhnya di disk, melainkan tersusun menurut modul dan jenis file untuk menyederhanakan navigasi di antara file sumber utama proyek Anda, dengan menyembunyikan file atau direktori tertentu yang tidak umum digunakan. Sebagian perubahan struktur yang dibandingkan dengan struktur pada disk termasuk yang berikut ini:
- Menampilkan semua file konfigurasi yang menyangkut pembangunan proyek dalam grup Gradle Scripttingkat teratas.
- Menampilkan semua file manifes untuk setiap modul dalam grup level-modul (bila Anda memiliki beberapa file manifes berbeda untuk beberapa ragam produk dan tipe pembangunan).
- Menampilkan semua file sumber daya alternatif dalam grup tunggal, sebagai ganti dalam folder terpisah per qualifier sumber daya. Misalnya, semua versi kepadatan ikon peluncur Anda terlihat berdampingan.
Dalam setiap modul aplikasi Android, file ditampilkan dalam grup-grup berikut:
manifests
Berisi file AndroidManifest.xml.
java
Berisi file kode sumber Java, dipisahkan oleh nama paket, termasuk kode pengujian JUnit.
res
Berisi semua sumber daya bukan kode, seperti layout XML, string UI, dan gambar bitmap, yang dibagi ke dalam beberapa sub-direktorinya. Untuk informasi selengkapnya tentang semua tipe sumber daya yang memungkinkan, lihat Menyediakan Sumber Daya.
Tampilan Proyek Android
Untuk melihat struktur file sesungguhnya dari suatu proyek termasuk semua file tersembunyi dari tampilan Android, pilih Project dari menu tarik-turun di bagian atas jendela Project.
Bila Anda memilih tampilan Project, Anda bisa melihat banyak file dan direktori lainnya. Yang terpenting di antaranya adalah sebagai berikut:
module-name/
build/
Berisi keluaran pembangunan.
libs/
Berisi pustaka privat.
src/
Berisi semua file sumber daya dan kode untuk modul dalam subdirektori berikut:
androidTest/
Berisi kode untuk pengujian instrumentasi yang dijalankan pada perangkat Android. Untuk informasi selengkapnya, lihat dokumentasi Pengujian Android.
main/
Berisi file sourceset “main”: sumber daya dan kode Android yang digunakan bersama oleh semua varian pembangunan (file untuk varian pembangunan lainnya berada dalam direktori saudara, misalnya src/debug/ untuk tipe pembangunan versi debug).
AndroidManifest.xml
Menjelaskan sifat aplikasi dan masing-masing komponennya. Untuk informasi selengkapnya, lihat dokumentasi AndroidManifest.xml.
java/
Berisi sumber kode Java.
jni/
Berisi kode asli yang menggunakan Java Native Interface (JNI). Untuk informasi selengkapnya, lihat dokumentasi Android NDK.
gen/
Berisi file Java yang dihasilkan oleh Android Studio, misalnya file R.java Anda dan antarmuka yang dibuat dari file AIDL.
res/
Berisi sumber daya aplikasi, misalnya file yang dapat digambar, file layout, dan string UI. Lihat Sumber Daya Aplikasi untuk informasi selengkapnya.
assets/
Berisi file yang harus dikompilasi menjadi file .apk apa adanya. Anda bisa menyusuri direktori ini dengan cara yang sama seperti pada sistem file umumnya dengan menggunakan URI dan membaca file sebagai aliran byte dengan menggunakan AssetManager . Misalnya, inilah lokasi yang bagus untuk data game dan tekstur.
test/
Berisi kode untuk pengujian lokal yang dijalankan pada JVM host Anda.
build.gradle (modul)
Ini mendefinisikan konfigurasi pembangunan khusus modul.
build.gradle (proyek)
Ini mendefinisikan konfigurasi pembangunan Anda yang berlaku pada semua modul. File ini integral pada proyek, jadi Anda harus menyimpannya dalam kontrol revisi bersama semua kode sumber lainnya.
Untuk informasi tentang lainnya file pembangunan lainnya, lihat Mengonfigurasi Pembangunan.
Setelan Struktur Proyek
Untuk mengubah beragam setelan bagi proyek Android Studio, buka dialog Project Structure dengan mengeklik File > Project Structure. Isinya adalah bagian-bagian berikut:
- SDK Location:Menyetel lokasi JDK, Android SDK, dan Android NDK yang digunakan proyek Anda.
- Project:Menyetel versi untuk Gradle dan plugin Android untuk Gradle, serta nama lokasi repositori.
- Developer Services:Berisi setelan untuk komponen add-in Android Studio dari Google atau pihak ketiga lainnya. Lihat Developer Services, di bawah.
- Modules:Memungkinkan Anda mengedit konfigurasi pembangunan khusus modul, termasuk SDK minimum dan target, tanda tangan aplikasi, dan dependensi pustaka. Lihat Modules, di bawah.
Developer Services
Bagian Developer Services pada kotak dialog Project Structure berisi laman konfigurasi untuk sejumlah layanan yang bisa Anda gunakan bersama aplikasi. Bagian ini berisi laman berikut:
- AdMob:Memungkinkan Anda mengaktifkan komponen AdMob Google, yang akan membantu Anda memahami pengguna dan menampilkan iklan yang disesuaikan untuk mereka.
- Analytics:Memungkinkan Anda mengaktifkan Google Analytics, yang akan membantu Anda mengukur interaksi pengguna dengan aplikasi Anda di beragam perangkat dan lingkungan.
- Authentication:Memungkinkan pengguna menggunakan Google Sign-In untuk proses masuk ke aplikasi Anda dengan akun Google mereka.
- Cloud:Memungkinkan Anda mengaktifkan layanan berbasis awan Firebase bagi aplikasi Anda.
- Notifications:Memungkinkan Anda menggunakan Google Cloud Messaging untuk berkomunikasi antara aplikasi dan server Anda.
Mengaktifkan salah satu layanan ini dapat menyebabkan Android Studio menambahkan dependensi dan izin yang diperlukan pada aplikasi Anda. Setiap laman konfigurasi mencantumkan tindakan ini dan tindakan lainnya yang akan dilakukan Android Studio jika Anda mengaktifkan layanan terkait.
Modules
Bagian setelan Modules memungkinkan Anda mengubah opsi konfigurasi untuk setiap modul proyek Anda. Setiap laman setelan modul dibagi ke dalam tab-tab berikut:
- Properties:Menetapkan versi SDK dan alat pembangunan yang digunakan untuk mengompilasi modul.
- Signing:Menetapkan sertifikat yang akan digunakan untuk menandatangani APK Anda.
- Flavors:Memungkinkan Anda membangun beberapa ragam pembangunan, dalam hal ini masing-masing ragam menetapkan seperangkat setelan konfigurasi, misalnya versi SDK minimum dan target modul, serta kode versi dan nama versi. Misalnya, Anda dapat mendefinisikan satu ragam yang memiliki SDK minimum 15 dan SDK target 21, serta ragam lainnya yang memiliki SDK minimum 19 dan SDK target 23.
- Build Types:Memungkinkan Anda membuat dan memodifikasi konfigurasi pembangunan, seperti yang dijelaskan dalam Mengonfigurasi Pembangunan Gradle. Secara default, setiap modul memiliki tipe pembangunan versi debug dan rilis, namun Anda bisa mendefinisikan yang lainnya bila perlu.
- Dependencies:Mencantumkan pustaka, file, dan dependensi modul untuk modul ini. Anda bisa menambahkan, memodifikasi, dan menghapus dependensi dari panel ini. Untuk informasi selengkapnya tentang dependensi modul, lihat Mengonfigurasi Pembangunan Gradle.
- strukture xml
Struktur dokumen XML – XML tree
Contoh sebuah dokumen xml :
<?xml version=”1.0″ encoding=”ISO-8859-1″?><?xml version=”1.0″?> <buku> <pengarang>robert</pengarang> <judul>mak lampir</judul> <tahun>1990</tahun> </buku>
Penjelasan :
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 buku
Tiga baris berikutnya menggambarkan child element dari root (pengarang, judul, tahun)
Dan baris terakhir adalah penutup root
Dari dokumen xml tersebut dapat digambarkan bahwa, buku tersebut dikarang oleh robert,judulnya mak lampir, dan diterbitkan tahun1990
XML dokumen berbentuk struktur pohon (tree structure)
Sebuah dokumen XML harus berisi element root, elemen ini merupakan parent dari element-element yang lain. Elemen dalam dokumen XML membentuk struktur pohon. Sebuah pohon dimulai dengan root dan memiliki cabang sampai level yang paling rendah. Semua elemen dapat mempunyai sub elemen(elemen child).
<root> <child> <subchild>…..</subchild> </child></root>
Istilah parent, child, dan sibling yang digunakan untuk menggambarkan hubungan antar elemen. Elemen root memiliki child. children pada tingkat yang sama disebut sibling(saudara).
Semua elemen dapat memiliki konten teks dan atribut (seperti dalam HTML). Perhatikan gambar berikut :
Gambar diatas mewakili salah satu buku di XML di bawah ini:
<bookstore>
<book category=”COOKING”>
<title lang=”en”>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category=”CHILDREN”>
<title lang=”en”>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category=”WEB”>
<title lang=”en”>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
root element dalam contoh di atas adalah <bookstore>. Semua <book> elements di dalam dokumen berada dalam <bookstore>.
<book> element memiliki 4 children: <title>,< author>, <year>, <price>.
- layout android
Berikut jenis-jenis layout yang terdapat di Android :
- LinearLayout
- RelativeLayout
- TableLayout
- GridView
- TabLayout
- ListView
LinearLayout adalah layout yang menampilkan elemen-elemen view dengan arah linear, vertikal ataupun horizontal. Ini adalah layout paling sederhana di Android.
RelativeLayout 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.
TableLayout 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>.
GridView adalah layout grid yang biasa digunakan untuk membuat galeri foto.
TabLayout adalah layout pada android dengan desain seperti tab.
ListView adalah jenis layout dengan tampilan list.
- Mendesain UI / layout
Membangun UI dengan Layout Editor
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.
Laman ini menyediakan ringkasan fitur dan antarmuka Layout Editor. Untuk mengetahui selengkapnya tentang cara membangun layout dengan ConstraintLayout, lihat Membangun UI Responsif dengan ConstraintLayout.
Pengantar Editor
Layout Editor muncul bila Anda membuka file layout XML. Sesuai angka dalam gambar 1, 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.
Mengubah penampilan pratinjau
Tombol-tombol di baris atas editor Design memungkinkan Anda mengonfigurasi penampilan layout dalam editor. Bilah alat ini juga tersedia dalam editor Text di jendela Preview.
Gambar 3. Tombol-tombol di bilah alat Layout Editor yang mengonfigurasi penampilan layout
Sesuai nomor dalam gambar 3, tombol yang tersedia adalah seperti berikut:
- Desain dan cetak biru: Pilih cara Anda ingin menampilkan layout di editor. Tampilan Design menampilkan pratinjau berwarna dari layout Anda, sedangkan tampilan Blueprint hanya menampilkan garis luar setiap tampilan. Atau Anda bisa menampilkan Design + Blueprint
Tip: Anda bisa beralih tampilan dengan menekan B.
- Orientasi layar: Memutar perangkat antara lanskap dan potret.
- Ukuran dan tipe perangkat: Pilih tipe perangkat (ponsel/tablet, Android TV, atau Android Wear) dan konfigurasi layar (ukuran dan kepadatan). Anda bisa memilih dari sejumlah tipe perangkat yang telah dikonfigurasi dan definisi AVD Anda sendiri, atau mulailah AVD baru dengan memilih Add Device Definitiondari daftar.
Tip: Anda bisa mengubah ukuran perangkat dengan menyeret sudut kanan bawah layout.
- Versi API: Pilih versi Android tempat pratinjau layout Anda.
- Tema aplikasi: Pilih tema UI yang akan diterapkan pada pratinjau. Catatan: Ini hanya berfungsi untuk gaya layout yang didukung; sehingga banyak tema dalam daftar ini yang mengakibatkan kesalahan.
- Bahasa: Pilih bahasa untuk menampilkan string UI Anda. Daftar ini hanya menampilkan bahasa yang tersedia dalam sumber daya string Anda. Jika Anda ingin mengedit terjemahan, klik Edit Translationsdari menu tarik-turun (lihat Melokalkan UI dengan Translations Editor).
- Varian Layout: Beralih ke salah satu layout alternatif Anda untuk file ini, atau buat yang baru (lihat Membuat varian layoutdi bawah).
Catatan: Konfigurasi ini tidak berpengaruh pada kode atau manifes aplikasi (kecuali jika Anda memilih untuk menambahkan file layout baru dari Varian Layout); konfigurasi ini hanya memengaruhi pratinjau layout.
Membuat Layout Baru
Saat menambahkan layout baru untuk aplikasi Anda, mulailah dengan membuat file layout dalam direktori layout/ default proyek Anda sehingga diterapkan pada semua konfigurasi perangkat. Setelah memiliki layout default, Anda bisa membuat variasi layout itu untuk konfigurasi perangkat tertentu (misalnya untuk layar ekstra besar)—jika itu yang Anda inginkan, lompat ke buat varian layout.
Ada beberapa macam cara untuk membuat layout baru, bergantung pada tampilan jendela Project Anda, namun prosedur berikut dapat diakses dari tampilan apa saja:
- Di jendela Project, klik modul (misalnya app) yang ingin Anda tambahkan layout.
- Di menu utama, pilih File > New > XML > Layout XML File.
- Dalam dialog yang muncul, masukkan nama file, tag layout akar, dan set sumber yang memiliki layout tersebut. Kemudian klik
Gambar 4. Dialog untuk menambahkan file XML layout baru
Dua cara lain untuk memulai file layout baru (walaupun dialog yang muncul berbeda) adalah sebagai berikut:
- Jika Anda memilih tampilan Projectdi jendela Project: buka direktori res untuk modul aplikasi Anda, klik kanan direktori layout tempat Anda ingin menambahkan layout kemudian klik New > Layout resource file.
- Jika Anda telah memilih tampilan Androiddi jendela Project: klik kanan folder layout kemudian pilih New > Layout resource file.
Membuat varian layout
Jika Anda sudah memiliki layout dan ingin membuat versi alternatifnya untuk mengoptimalkan layout bagi orientasi atau ukuran layar yang berbeda, ikuti langkah-langkah ini:
- Buka file layout asal dan pastikan Anda menampilkan editor Design(klik tab Design di bagian bawah jendela).
- Klik Layout Variants di bilah alat. Dalam daftar tarik-turun, klik varian yang diusulkan misalnya Create Landscape Variant dan selesai, atau klik Create Other dan lanjutkan ke langkah berikutnya.
- Dalam dialog yang muncul, Anda hanya perlu mendefinisikan qualifier sumber daya untuk nama direktori tersebut. Anda bisa mengetikkannya dalam Directory nameatau pilih dari daftar Available qualifiers, satu per satu, dan klik Add .
- Setelah Anda menambahkan semua qualifier, klik OK.
Bila Anda memiliki beberapa variasi layout yang sama, Anda bisa dengan mudah berpindah layout dari daftar yang muncul bila Anda mengeklik Layout Variants .
Untuk informasi selengkapnya tentang cara membuat layout bagi layar yang berbeda, lihat Mendukung Ukuran Layar Berbeda.
Mengonversikan layout ke ConstraintLayout
ConstraintLayout adalah grup tampilan yang tersedia di pustaka Constraint Layout, yang telah disertakan bersama Android Studio 2.2 dan yang lebih tinggi. Layout ini dibangun dari nol bersama Layout Editor, jadi apa saja dapat diakses dari Design editor dan Anda tidak perlu mengedit XML secara manual. Yang paling penting, sistem layout berbasis batasan ini memungkinkan Anda membangun hampir semua layout tanpa menyarangkan grup tampilan apa pun.
Untuk meningkatkan kinerja layout, Anda harus mengonversi layout lama ke ConstraintLayout. Android Studio memiliki konverter bawaan untuk membantu Anda melakukan ini:
- Buka layout yang ada di Android Studio dan klik tab Designdi bagian bawah jendela editor.
- Di jendela Component Tree, klik kanan layout kemudian klik Convert layoutto ConstraintLayout.
Untuk mengetahui selengkapnya tentang cara membangun layout dengan ConstraintLayout, lihat Membangun UI Responsif dengan ConstraintLayout.
- Android UI Control
Kontrol UI Android
Ada sejumlah kontrol UI yang disediakan oleh Android yang memungkinkan Anda membangun antarmuka pengguna grafis untuk aplikasi Anda.
Sr.No. | UI Control & Description |
1 | TextView
Kontrol ini digunakan untuk menampilkan teks ke pengguna. |
2 | EditText
EditText adalah subclass TextView yang telah ditentukan sebelumnya yang mencakup kemampuan pengeditan yang kaya |
3 | AutoCompleteTextView
AutoCompleteTextView adalah tampilan yang mirip dengan EditText, kecuali menampilkan daftar saran penyelesaian secara otomatis saat pengguna mengetik. |
4 | Button
Tombol push yang bisa ditekan, atau diklik, oleh pengguna untuk melakukan suatu tindakan. |
5 | ImageButton
ImageButton adalah AbsoluteLayout yang memungkinkan Anda menentukan lokasi pastinya dari anak-anaknya. Ini menunjukkan sebuah tombol dengan gambar (bukan teks) yang bisa ditekan atau diklik oleh pengguna. |
6 | CheckBox
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. |
7 | ToggleButton
Tombol on / off dengan indikator lampu. |
8 | RadioButton
RadioButton memiliki dua negara bagian: baik dicentang atau tidak dicentang. |
9 | RadioGroup
RadioGroup digunakan untuk mengelompokkan satu atau beberapa RadioButtons. |
10 | ProgressBar
Tampilan ProgressBar memberikan umpan balik visual tentang beberapa tugas yang sedang berlangsung, seperti saat Anda melakukan tugas di latar belakang. |
11 | Spinner
Daftar drop-down yang memungkinkan pengguna memilih satu nilai dari satu set. |
12 | TimePicker
Tampilan TimePicker memungkinkan pengguna memilih waktu dalam sehari, baik dalam mode 24 jam maupun mode AM / PM. |
13 | DatePicker
Tampilan DatePicker memungkinkan pengguna memilih tanggal hari itu. |
- Contoh Program UI Control
Kontrol UI
Maps API menawarkan beberapa kontrol UI bawaan yang serupa dengan yang ditemukan dalam aplikasi Google Maps pada ponsel Android Anda. Anda bisa mengubah visibilitas kontrol ini dengan menggunakan kelas UiSettings yang bisa diperoleh dari GoogleMap dengan metode GoogleMap.getUiSettings. Perubahan yang dilakukan pada kelas ini segera diterapkan pada peta. Untuk melihat contoh fitur ini, lihat aktivitas demo Setelan UI dalam aplikasi contoh.
Anda juga bisa mengonfigurasi sebagian besar opsi ini bila peta telah dibuat, baik melalui atribut XML atau menggunakan kelas GoogleMapOptions. Lihat Mengonfigurasi status awal untuk detail selengkapnya.
Setiap kontrol UI memiliki posisi sesuai dengan tepi peta, yang telah ditentukan sebelumnya. Anda bisa memindahkan kontrol menjauh dari tepi atas, bawah, kiri atau kanan dengan menambahkan [pengisi] ke objek GoogleMap.
Kontrol zoom
Maps API menyediakan kontrol zoom bawaan yang muncul di sudut kanan bawah peta. Kontrol dinonaktifkan secara default, namun bisa diaktifkan dengan memanggil UiSettings.setZoomControlsEnabled(true).
Kompas
Maps API menyediakan gambar kompas yang muncul di sudut kiri atas peta dalam keadaan tertentu. Kompas hanya akan muncul bila kamera diarahkan sedemikian rupa sehingga memiliki penjuru bukan nol atau kemiringan bukan nol. Bila pengguna mengeklik kompas, kamera akan beranimasi kembali ke posisi dengan penjuru dan kemiringan nol (orientasi default) dan kompas menghilang tidak lama kemudian. Anda bisa menonaktifkan kompas yang muncul bersamaan dengan memanggil UiSettings.setCompassEnabled(boolean). Akan tetapi, Anda tidak bisa memaksa kompas untuk selalu ditampilkan.
Tombol My Location
Tombol My Location muncul di sudut kanan atas layar hanya bila layer My Location diaktifkan. Untuk detailnya, lihat panduan untuk data lokasi.
Level-picker
Secara default, level-picker (floor-picker) muncul dekat tepi tengah sebelah kanan layar saat pengguna menampilkan sebuah peta dalam ruangan. Bila ada dua atau beberapa peta dalam ruangan terlihat, level-picker akan memilih bangunan yang sedang difokus, yang biasanya adalah bangunan paling dekat dengan tengah layar. Setiap bangunan memiliki tingkat default yang akan dipilih bila picker pertama kali ditampilkan. Pengguna bisa memilih tingkat yang berbeda dengan memilihnya dari picker.
Anda bisa menonaktifkan atau mengaktifkan kontrol level-picker dengan memanggilGoogleMap.getUiSettings().setIndoorLevelPickerEnabled(boolean).
Ini berguna jika Anda ingin mengganti level-picker default dengan level-picker Anda sendiri.
File Presentasi dapat di download disini.
Sumber sumber
- http://www.insinyoer.com/komponen-aplikasi-android/
- https://developer.android.com/guide/practices/screens_support.html?hl=id
- https://developer.android.com/guide/components/processes-and-threads.html?hl=id
- http://www.erikgunawan.com/android-siklus-hidup-activity-activity-lifecycle/
- https://mobileacademycamp.wordpress.com/2016/02/15/struktur-project-pada-android-studio/
- http://dwi.staff.unisbank.ac.id/2012/10/24/struktur-dokumen-xml-xml-tree/
- https://www.dumetschool.com/blog/Layout-di-Android
- https://developer.android.com/studio/write/layout-editor.html?hl=id
- https://www.tutorialspoint.com/android/android_user_interface_controls.htm
- https://developers.google.com/maps/documentation/android-api/controls?hl=id