Advertisement
  1. Code
  2. Android SDK
Code

Kode Widget untuk Aplikasi Android Anda: Tambahkan Aktivitas Konfigurasi

by
Difficulty:IntermediateLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by Hasannudin Amin (you can also view the original English article)

Widget aplikasi memberi pengguna akses mudah ke fitur aplikasi yang paling sering digunakan, sembari memberi aplikasi Anda kehadiran di layar beranda pengguna. Dengan menambahkan widget ke proyek Anda, Anda dapat memberikan pengalaman pengguna yang lebih baik, sambil mendorong pengguna untuk tetap terlibat dengan aplikasi Anda, karena setiap kali mereka melirik homescreen mereka, mereka akan melihat widget Anda, menampilkan beberapa aplikasi Anda yang paling berguna dan konten yang menarik.

Dalam seri tiga bagian ini, kami membuat widget aplikasi yang memiliki semua fungsi yang akan Anda temukan di hampir setiap widget aplikasi Android.

Di pos pertama, kita membuat widget yang mengambil dan menampilkan data dan melakukan tindakan unik sebagai respons terhadap event onClick. Lalu di pos kedua, kita memperluas widget kita untuk mengambil dan menampilkan data baru secara otomatis berdasarkan jadwal, dan sebagai tanggapan atas interaksi pengguna.

Kami mengambil tepat di tempat kami tinggalkan, jadi jika Anda tidak memiliki salinan widget yang kami buat di bagian pertama, Anda dapat mengunduhnya dari GitHub.

Meningkatkan Widget Anda dengan Aktivitas Konfigurasi

Meskipun fungsi widget kita out of the box, beberapa widget memerlukan pengaturan awal — misalnya, widget yang menampilkan pesan pengguna akan memerlukan alamat email dan kata sandinya. Anda mungkin juga ingin memberi pengguna kemampuan untuk menyesuaikan widget, seperti mengubah warnanya atau bahkan memodifikasi fungsinya, seperti seberapa sering pembaruan widget.

Jika widget Anda dapat disesuaikan atau memerlukan beberapa pengaturan, maka Anda harus menyertakan Aktivitas konfigurasi, yang akan diluncurkan secara otomatis segera setelah pengguna menempatkan widget di layar beranda mereka.

Aktivitas Konfigurasi juga dapat berguna jika Anda memiliki banyak ide tentang informasi dan fitur yang ingin Anda sertakan dalam widget Anda. Daripada menjejalkan semua konten ini ke dalam tata letak yang kompleks dan berpotensi membingungkan, Anda dapat memberikan konfigurasi Kegiatan di mana pengguna memilih dan memilih konten yang penting bagi mereka.

Jika Anda menyertakan Aktivitas konfigurasi, maka jangan terbawa, karena ada titik di mana pilihan menjadi terlalu banyak pilihan. Menyiapkan widget tidak akan terasa sulit, jadi sebaiknya Anda membatasi widget Anda ke dua atau tiga opsi konfigurasi. Jika Anda berjuang untuk tidak melampaui batas ini, maka pertimbangkan apakah semua pilihan ini benar-benar diperlukan, atau apakah itu hanya menambahkan kerumitan yang tidak perlu ke proses penyiapan.

Untuk membuat Aktivitas konfigurasi, Anda harus mengikuti langkah-langkah berikut.

1. Buat Tata Letak Aktivitas

Ini sama persis dengan membangun tata letak untuk Aktivitas reguler, jadi buat file sumber daya tata letak baru dan tambahkan semua elemen UI Anda seperti biasa.

Aktivitas konfigurasi adalah tempat pengguna melakukan penyiapan awal, jadi setelah mereka menyelesaikan Kegiatan ini mereka tidak akan membutuhkannya lagi. Karena tata letak widget sudah lebih kecil daripada tata letak Aktivitas biasa, Anda tidak boleh membuang-buang ruang berharga dengan memberi pengguna cara untuk meluncurkan kembali Aktivitas konfigurasi langsung dari tata letak widget.

Di sini saya membuat file sumber daya tata letak configuration_activity.xml sederhana yang berisi tombol yang ketika diketuk, akan membuat widget aplikasi.

2. Buat Kelas Konfigurasi Anda

Konfigurasi Aktivitas Anda harus menyertakan ID Widget Aplikasi yang dilewatkan oleh Intent yang meluncurkan Aktivitas konfigurasi.

Jika Anda menyertakan Aktivitas konfigurasi, perhatikan bahwa metode onUpdate() tidak akan dipanggil ketika pengguna membuat instance widget, karena siaran ACTION_APPWIDGET_UPDATE tidak dikirim saat konfigurasi Aktivitas diluncurkan. Ini adalah tanggung jawab Kegiatan konfigurasi untuk meminta pembaruan pertama ini langsung dari AppWidgetManager. Metode onUpdate() akan dipanggil normal untuk semua pembaruan berikutnya.

Buat kelas Java baru bernama configActivity dan tambahkan yang berikut:

3. Deklarasikan Kegiatan Konfigurasi dalam Manifestasi Proyek Anda

Saat Anda mendeklarasikan konfigurasi Kegiatan Anda dalam Manifest, Anda perlu menentukan bahwa ia menerima tindakan ACTION_APPWIDGET_CONFIGURE:

4. Deklarasikan Kegiatan Konfigurasi dalam File AppWidgetProviderInfo Anda

Karena Aktivitas konfigurasi direferensikan di luar cakupan paket Anda, Anda harus mendeklarasikannya menggunakan namespace yang sepenuhnya memenuhi syarat:

Sekarang, kapan pun Anda membuat turunan baru dari widget ini, konfigurasi Aktivitas akan diluncurkan, dan Anda harus menyelesaikan semua opsi dalam Kegiatan ini sebelum widget Anda dibuat. Dalam contoh ini, itu berarti memberikan tombol Create Widget ketukan.

Test the application widget configuration Activity

Ingat, Anda dapat mengunduh widget yang sudah selesai, lengkap dengan Aktivitas konfigurasi, dari GitHub.

Praktik Terbaik Aplikasi Widget

Sepanjang seri ini, kami telah membuat widget aplikasi yang menunjukkan semua fitur inti yang akan Anda temukan di hampir setiap widget aplikasi Android. Pada titik ini, Anda tahu cara membuat widget yang mengambil dan menampilkan data, bereaksi terhadap kejadian onClick, pembaruan dengan informasi baru berdasarkan jadwal dan dalam menanggapi interaksi pengguna, dan memiliki gambar pratinjau kustom.

Ini mungkin merupakan blok pembangun dasar dari widget aplikasi Android, tetapi menciptakan sesuatu yang berfungsi tidak pernah cukup — Anda juga perlu memastikan widget Anda memberikan pengalaman pengguna yang baik, dengan mengikuti praktik terbaik.

Lakukan Operasi Pengambilan Waktu di Off the Main Thread

Widget memiliki pembatasan waktu proses yang sama seperti receiver siaran biasa, sehingga mereka berpotensi memblokir semua utas UI utama Android yang penting.

Android memiliki satu utas tempat semua kode aplikasi Anda berjalan secara default, dan karena Android hanya dapat memproses satu tugas dalam satu waktu, mudah untuk memblokir utas penting ini. Lakukan operasi jangka panjang atau intensif apa pun di utas utama, dan antarmuka pengguna aplikasi Anda tidak akan responsif hingga operasi selesai. Dalam skenario terburuk, ini dapat menyebabkan kesalahan Android Application Not Responding (ANR) dan aplikasi macet.

Jika widget Anda memang perlu melakukan tugas yang memakan waktu atau padat karya, maka Anda harus menggunakan layanan daripada thread utama. Anda dapat membuat layanan seperti biasa dan kemudian memulainya di AppWidgetProvider Anda. Misalnya, di sini kita menggunakan layanan untuk memperbarui widget kami:

Buat Layout Fleksibel

Membuat tata letak yang dapat beradaptasi dengan berbagai konfigurasi layar adalah salah satu aturan paling penting untuk mengembangkan Android, dan itu adalah aturan yang juga berlaku untuk widget. Sama seperti Aktivitas biasa, tata letak widget Anda harus cukup fleksibel untuk ditampilkan dan berfungsi dengan benar terlepas dari konfigurasi layar, tetapi ada beberapa alasan tambahan mengapa tata letak widget harus sefleksibel mungkin.

Pertama, jika widget Anda dapat diubah ukurannya, pengguna dapat secara manual menambah dan mengurangi ukuran widget Anda, yang merupakan sesuatu yang tidak perlu Anda khawatirkan dengan Aktivitas tradisional.

Kedua, tidak ada jaminan bahwa pengukuran minWidth dan minHeight widget Anda akan sejajar sempurna dengan kisi layar utama perangkat tertentu. Ketika sebuah widget tidak sempurna, sistem operasi Android akan meregangkan widget itu secara horizontal dan / atau vertikal untuk menempati jumlah minimum sel yang diperlukan untuk memenuhi batasan minWidth dan minHeight widget. Meskipun ini seharusnya tidak menjadi peningkatan yang signifikan, tetap perlu diperhatikan bahwa sejak awal widget Anda mungkin menempati lebih banyak ruang daripada yang Anda perkirakan.

Membuat tata letak widget yang fleksibel mengikuti praktik terbaik yang sama dengan merancang tata letak Aktivitas yang fleksibel. Sudah ada banyak informasi yang tersedia tentang topik ini, tetapi berikut adalah beberapa hal terpenting yang harus diingat saat membuat tata letak widget Anda:

  • Hindari satuan ukuran absolut, seperti mendefinisikan tombol dalam piksel. Karena kepadatan layar beragam, 50 piksel tidak diterjemahkan ke ukuran fisik yang sama di setiap perangkat. Jadi tombol 50px akan tampak lebih besar pada layar dengan kerapatan rendah dan lebih kecil pada layar berdensitas tinggi. Anda harus selalu menentukan dimensi tata letak Anda dalam unit kepadatan-independen (dpi) dan menggunakan elemen fleksibel seperti wrap_content dan match_parent.
  • Sediakan sumber daya alternatif yang dioptimalkan untuk kepadatan layar yang berbeda. Anda juga dapat menyediakan tata letak yang dioptimalkan untuk ukuran layar yang berbeda, menggunakan kualifikasi konfigurasi seperti smallestWidth (sw<N>dp). Jangan lupa untuk menyediakan versi default dari setiap sumber daya, sehingga aplikasi Anda memiliki sesuatu untuk kembali jika pernah menemukan layar dengan karakteristik yang tidak memiliki sumber daya khusus untuknya. Anda harus mendesain sumber daya default ini untuk layar normal dengan kepadatan sedang.
  • Uji widget Anda di sebanyak mungkin layar, menggunakan emulator Android. Saat membuat AVD, Anda dapat menentukan ukuran dan resolusi layar yang tepat, menggunakan kontrol Screen yang muncul di menu Configure this hardware profile. Jangan lupa untuk menguji bagaimana widget Anda menangani ukurannya di semua layar yang berbeda ini!
Test your widget across a range of AVDs using the emulator

Jangan Bangunkan Perangkat

Pembaruan widget membutuhkan daya baterai, dan sistem operasi Android tidak memiliki keraguan tentang membangunkan perangkat tidur untuk melakukan pembaruan, yang memperkuat dampak widget Anda pada baterai perangkat.

Jika pengguna menyadari bahwa widget Anda menguras baterai mereka, setidaknya mereka akan menghapus widget tersebut dari layar beranda mereka. Dalam skenario terburuk, mereka bahkan dapat menghapus aplikasi Anda sepenuhnya.

Anda harus selalu bertujuan untuk memperbarui widget Anda sesedikit mungkin selagi masih menampilkan informasi yang tepat waktu dan relevan. Namun, beberapa widget mungkin memiliki alasan yang sah untuk meminta pembaruan sering — misalnya, jika widget menyertakan konten yang sangat peka terhadap waktu.

Dalam skenario ini, Anda dapat mengurangi dampak dari pembaruan yang sering terjadi pada masa pakai baterai, dengan melakukan pembaruan berdasarkan alarm yang tidak akan membangunkan perangkat tidur. Jika alarm ini mati saat perangkat sedang tidur, pembaruan tidak akan dikirimkan hingga waktu berikutnya perangkat bangun.

Untuk memperbarui berdasarkan alarm, Anda perlu menggunakan AlarmManager untuk mengatur alarm dengan Intent yang akan diterima oleh AppWidgetProvider Anda, lalu mengatur jenis alarm ke ELAPSED_REALTIME atau RTC, karena jenis alarm ini tidak akan membangunkan perangkat tidur. Sebagai contoh:

Jika Anda menggunakan alarm, pastikan Anda membuka file AppWidgetProviderInfo proyek Anda (res/xml/new_app_widget_info.xml) dan setel updatePeriodMillis ke nol ("0"). Jika Anda lupa langkah ini, nilai updatePeriodMillis akan menggantikan AlarmManager dan widget Anda akan tetap membangunkan perangkat setiap kali membutuhkan pembaruan.

Kesimpulan

Dalam seri tiga bagian ini, kita telah membuat widget aplikasi Android yang menunjukkan cara menerapkan semua fitur paling umum yang ditemukan di widget aplikasi.

Jika Anda telah mengikuti sejak awal, maka pada titik ini Anda akan telah membangun widget yang diperbarui secara otomatis dan sebagai tanggapan terhadap masukan pengguna, dan itu mampu bereaksi terhadap kejadian onClick. Akhirnya, kami melihat beberapa praktik terbaik untuk memastikan widget Anda memberikan pengalaman pengguna yang baik, dan membahas cara meningkatkan widget Anda dengan Aktivitas konfigurasi.

Terima kasih telah membaca, dan saat Anda berada di sini, lihat beberapa pos hebat kami lainnya di pengembangan aplikasi Android!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.