Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Code Widget untuk Android: Input dan Display

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Ilham Saputra (you can also view the original English article)

Sejak Android 1.5, widget aplikasi telah memungkinkan pengguna mendapatkan informasi, mengendalikan aplikasi, dan melakukan tugas penting, semuanya dari kenyamanan homescreens mereka.

Dalam rangkaian bagian dua ini, saya akan menunjukkan kepada Anda bagaimana memberikan pengalaman pengguna yang lebih baik dengan menambahkan widget aplikasi ke proyek Androidmu.

Pada akhir seri, Anda akan membuat widget yang:

  • Menampilkan beberapa kumpulan data.
  • Melakukan tindakan unik saat pengguna berinteraksi dengan View tertentu di dalam tata letak widget itu.
  • Pembaruan secara otomatis setiap kali satu periode waktu telah berlalu.
  • Pembaruan dengan data baru sebagai respons terhadap interaksi pengguna.

Di postingan pertama ini, kami akan menggunakan tools bawaan Android Studio untuk menghasilkan dengan cepat dan mudah semua file yang dibutuhkan untuk mengirimkan apa saja widget aplikasi Android. Kami kemudian akan memperluas fondasi ini untuk membuat widget yang mengambil dan menampilkan data dan merespons event onClick.

Apa itu Widget Aplikasi?

Widget aplikasi adalah aplikasi miniatur ringan yang biasanya termasuk dalam salah satu kategori berikut:

  • Widget informasi. Widget yang tidak dapat discroll yang menampilkan informasi penting, seperti widget cuaca atau jam.
  • Koleksi widget. Widget yang dapat discroll yang menampilkan serangkaian elemen terkait, seperti galeri foto atau artikel dari publikasi yang sama. Widget koleksi biasanya didukung oleh sumber data, seperti Array atau database. Widget koleksi harus menyertakan ListView, GridView, StackView, atau AdapterViewFlipper.
  • Kontrol widget. Widget yang bertindak sebagai remote control untuk aplikasi Anda, memungkinkan pengguna untuk memicu fungsi yang sering digunakan tanpa perlu meluncurkan aplikasi Anda. Aplikasi yang memutar musik sering memberikan widget yang memungkinkan pengguna bermain, menjeda, dan melewatkan trek langsung dari homescreen mereka.
  • Widget hibrida. Mengapa membatasi diri Anda pada satu kategori, kapan Anda bisa memilih elemen ceri dari beberapa kategori? Sadarilah bahwa pencampuran dan pencocokan dapat menyebabkan pengalaman pengguna yang membingungkan, jadi untuk hasil terbaik Anda harus merancang widget Anda dengan satu kategori dan kemudian menambahkan elemen dari kategori lain sesuai kebutuhan. Misalnya, jika Anda ingin membuat widget yang menampilkan ramalan cuaca hari ini, namun juga memungkinkan pengguna melihat ramalan untuk hari dan lokasi yang berbeda, maka Anda harus membuat widget informasi dan kemudian menambahkan elemen kontrol yang diperlukan sesudahnya.

Selain fungsi di atas, sebagian besar widget merespons event onClick dengan meluncurkan aplikasi yang terkait, serupa dengan shortcut aplikasi, namun juga dapat memberikan akses langsung ke konten tertentu dalam aplikasi itu.

Widget aplikasi harus ditempatkan di dalam App Widget Host, yang paling umum adalah stok homescreen Android, walaupun ada beberapa Host Widget App pihak ketiga, seperti Nova Launcher dan Apex Launcher yang populer.

Sepanjang seri ini, saya akan berbicara tentang widget sebagai sesuatu yang Anda tempatkan di homescreen, namun jika Anda memiliki ingatan samar untuk bisa memasang widget di layar lockscreen, ini bukan sekadar mimpi indah! Antara tingkat API 17 dan 20, adalah mungkin untuk menempatkan widget pada homescreen atau layar lockscreen.

Sejak widget lockscreen sudah tidak berlaku lagi di level API 21, dalam seri ini kita akan membuat widget untuk homescreen saja.

Mengapa Harus Membuat Widget Aplikasi?

Ada beberapa alasan mengapa Anda harus mempertimbangkan untuk menambahkan widget aplikasi ke proyek Android terbarumu.

Akses Mudah terhadap Informasi dan Fitur Penting

Widget memungkinkan pengguna melihat informasi terpenting aplikasi Anda, langsung dari homescreen mereka. Misalnya, jika Anda telah mengembangkan aplikasi kalender, Anda mungkin membuat widget yang menampilkan detail tentang janji temu pengguna berikutnya. Ini jauh lebih mudah daripada memaksa pengguna meluncurkan aplikasimu dan berpotensi menavigasi beberapa layar, hanya untuk mengambil informasi yang sama.

Jika Anda mengembangkan widget kontrol (atau widget hibrida dengan elemen kontrol) maka pengguna juga bisa menyelesaikan tugas langsung dari homescreen mereka. Melanjutkan contoh kalender kami, widget Anda memungkinkan pengguna membuat, mengedit dan membatalkan janji temu, berpotensi bahkan tanpa harus meluncurkan aplikasimu. Ini berpotensi menghapus beberapa langkah navigasi dari beberapa tugas terpenting aplikasimu, yang hanya dapat memberi dampak positif pada pengalaman pengguna!

Akses Langsung ke Semua Layar Paling Penting dari Aplikasimu

Mengetuk widget biasanya membawa pengguna ke tingkat atas aplikasi terkait, mirip dengan shortcut aplikasi. Namun, tidak seperti shortcut aplikasi, widget dapat menautkan ke area tertentu dalam aplikasi yang terkait. Misalnya, mengetuk pemberitahuan email Baru yang diterima oleh widget mungkin meluncurkan aplikasi dengan pesan baru yang telah dipilih, sambil mengetuk Create new email mungkin membawa mereka langsung ke Aktivitas ComposeEmail aplikasi Anda.

Dengan menyematkan beberapa tautan dalam tata letak widget Anda, Anda dapat memberikan akses mudah satu ketukan ke semua Aktivitas terpenting dari aplikasi Anda.

Buat Basis Pengguna yang Loyal dan Terlibat

Sebagai keseluruhan ledakan Pokemon Go dan penurunan selanjutnya terbukti, mendapatkan satu ton orang untuk mendownload aplikasi Anda tidak secara otomatis menjamin basis pengguna loyal yang masih akan menggunakan aplikasi Anda hari, minggu, atau bahkan berbulan-bulan.

Pengguna seluler adalah kelompok yang cukup mudah berubah, dan dengan memori yang tersedia di smartphone atau tablet Android khas Anda setiap saat, mudah kehilangan jejak aplikasi yang telah Anda pasang pada perangkat Anda. Kemungkinannya adalah, jika Anda mengangkat smartphone Android atau tablet Anda sekarang dan menggesek app drawer, Anda akan menemukan setidaknya satu aplikasi yang benar-benar Anda lupakan.

Dengan membuat widget yang menampilkan semua informasi dan fitur yang paling berharga dari aplikasi Anda, Anda memastikan bahwa setiap kali pengguna melirik homescreen mereka, mereka hanya diingatkan tidak hanya bahwa aplikasi Anda ada, namun juga memiliki konten yang bagus.

Menambahkan Widget Aplikasi ke Proyek Anda

Bahkan widget yang paling dasar membutuhkan banyak kelas dan sumber daya, namun saat Anda membuat widget menggunakan alat bawaan Android Studio, semua file ini dibuat untuk Anda. Karena tidak ada gunanya membuat pengembangan Android lebih sulit dari yang seharusnya, kami akan menggunakan tool ini untuk mulai memulai membangun widget kami.

Widget aplikasi harus selalu dikaitkan dengan aplikasi yang mendasarinya, jadi buatlah proyek Android baru dengan pengaturan pilihan Anda.

Setelah Android Studio membangun proyek Anda, pilih File> New > Widget > AppWidget dari toolbar Android Studio. Ini meluncurkan menu Configure Component dimana Anda dapat menentukan beberapa pengaturan awal widget Anda.

Configure your widgets settings in Android Studio

Sebagian besar pilihan ini cukup jelas, namun ada beberapa hal yang patut ditelusuri secara lebih rinci.

Resizable (API 12+)

Jika widget resizable, maka pengguna bisa menambah atau mengurangi jumlah 'cells' yang ditempatinya di homescreen mereka, dengan lama menekan widget dan kemudian menyeret pegangan biru yang muncul di seputar garis besarnya.

Bila memungkinkan, Anda harus memberi widget kemampuan untuk mengubah ukuran secara horizontal dan vertikal, karena ini akan membantu widget Anda menyesuaikan diri dengan berbagai konfigurasi layar dan pengaturan homescreen. Jika pengguna memiliki homescreen yang berantakan dengan serius, mungkin widget Anda mungkin tidak muat di homescreen tersebut, kecuali widget Anda dapat disesuaikan.

Jika Anda ingin membuat widget yang tidak dapat resizeable, buka menu dropdown Resizable dan pilih Only horizontal, Only vertikal, atau Not resizable.

Lebar Minimum dan Tinggi

Lebar minimum dan tinggi menentukan jumlah cell yang biasanya akan menempati widget Anda saat ditempatkan di homescreen.

Untuk widget resizable, ini adalah yang terkecil pengguna dapat ukurkan widget Anda, sehingga Anda dapat menggunakan nilai-nilai ini untuk mencegah pengguna dari mengecilkan widget Anda ke titik di mana ia menjadi tidak dapat digunakan.

Jika widget Anda tidak resizable, maka nilai minimum dan tinggi minimum adalah lebar permanen dan tinggi widget Anda.

Untuk meningkatkan kesempatan memasang widget dengan nyaman di berbagai homescreen, disarankan agar Anda tidak menggunakan apapun yang lebih besar dari 4 kali 4 untuk nilai lebar dan tinggi minimum.

Sementara lebar dan tinggi yang tepat dari 'cells' homescreen bervariasi antar perangkat, Anda bisa mendapatkan perkiraan kasar berapa banyak DPIs (dots per inch) widget Anda akan menempati dengan menggunakan rumus berikut:

Misalnya, jika widget Anda adalah 2 x 3 cell:

Widget ini akan menempati sekitar 110 x 180 DPIs pada homescreen pengguna. Jika nilai ini tidak sesuai dengan dimensi cell perangkat tertentu, maka Android akan secara otomatis memutar widget Anda ke ukuran cell terdekat.

Tinjau semua opsi di menu ini dan buat perubahan yang diinginkan (saya tetap berpegang pada default) dan kemudian klik Finish.

Android Studio sekarang akan menghasilkan semua file dan sumber daya yang dibutuhkan untuk mengirimkan widget aplikasi dasar. Widget ini tidak terlalu menarik (ini pada dasarnya hanyalah blok biru dengan kata Contoh tertulis di atasnya) namun widget fungsional yang dapat Anda uji pada perangkat Anda.

Untuk menguji widget:

  • Install proyek Anda di perangkat fisik Android atau AVD (Android Virtual Device).
  • Luncurkan Android's Widget Picker dengan menekan sembarang ruang kosong di homescreen, lalu ketuk kata Widget yang muncul di bagian bawah layar.
  • Gesek melalui Penjelajah Widget sampai Anda melihat widget Contoh biru.
  • Tekan ke bawah widget ini untuk memasukkannya ke homescreen Anda.
  • Masukkan mode resize dengan menekan widget sampai set pegangan biru muncul, lalu seret pegangan ini untuk menambah atau mengurangi jumlah cell yang dimiliki widget ini.
Test your widget on an Android Virtual Device

Menjelajahi File Widget Aplikasi

Widget ini mungkin tidak terlalu banyak, tapi mencakup semua kelas dan sumber daya yang akan kita kerjakan sepanjang sisa seri ini, jadi mari kita lihat file-file ini dan peran yang mereka mainkan dalam memberikan widget aplikasi.

NewAppWidget.Java

Penyedia widget adalah kelas kenyamanan yang berisi metode yang digunakan untuk interface pemrograman dengan widget melalui broadcast event. Di bawah tenda, widget pada dasarnya hanya BroadcastReceiver yang dapat merespons berbagai tindakan, seperti pengguna yang memasang contoh widget baru di homescreen mereka.

Yang paling menonjol, penyedia widget aplikasi adalah tempat Anda akan menentukan metode siklus hidup widget Anda, yang bisa dipanggil untuk setiap contoh widget atau hanya untuk contoh tertentu.

Meskipun kita cenderung menganggap widget sebagai entitas tunggal yang ditempatkan pengguna di homescreen mereka sekali, tidak ada yang mencegahnya menciptakan beberapa contoh widget yang sama. Mungkin widget Anda dapat disesuaikan, sampai pada titik di mana berbagai contoh dapat memiliki fungsi yang berbeda secara signifikan, atau mungkin pengguna hanya menyukai widget Anda sehingga mereka ingin memasangnya di seluruh homescreen mereka!

Mari kita lihat berbagai metode siklus hidup yang dapat Anda terapkan di kelas penyedia widget:

Event onReceive

Android memanggil method onReceive() pada BroadcastReceiver yang terdaftar setiap kali event yang ditentukan terjadi.

Anda biasanya tidak perlu menerapkan method ini secara manual, karena kelas AppWidgetProvider secara otomatis menyaring semua siaran widget dan operasi delegasi ke metode yang sesuai.

Event onEnabled

Method lifecycle onEnabled() disebut sebagai respons terhadap ACTION_APPWIDGET_ENABLED, yang disiarkan saat pengguna menambahkan contoh pertama widget Anda ke layar awal mereka. Jika pengguna membuat dua contoh widget Anda, maka onEnabled() dipanggil untuk instance pertama, namun tidak untuk yang kedua.

Metode siklus hidup ini adalah tempat Anda melakukan setup yang hanya perlu dilakukan sekali untuk semua contoh widget, seperti membuat database atau menyiapkan layanan.

Perhatikan bahwa jika pengguna menghapus semua contoh widget Anda dari perangkat mereka dan kemudian membuat instance baru, maka ini digolongkan sebagai instance pertama, dan akibatnya method onEnabled() akan dipanggil sekali lagi.

Event onAppWidgetOptionsChanged

Metode siklus hidup ini disebut sebagai tanggapan terhadap ACTION_APPWIDGET_OPTIONS_CHANGED, yang disiarkan saat contoh widget dibuat dan setiap kali widget diubah ukurannya. Anda dapat menggunakan metode ini untuk mengungkapkan atau menyembunyikan konten berdasarkan ukuran pengguna widget Anda, meskipun callback ini hanya didukung di Android 4.1 dan yang lebih tinggi.

Event onUpdate

Metode siklus hidup onUpdate() disebut setiap waktu:

  • Interval update telah berlalu.
  • Pengguna melakukan tindakan yang memicu metode onUpdate().
  • Pengguna menempatkan contoh widget baru di homescreen mereka (kecuali widget Anda berisi Aktivitas konfigurasi, yang akan kita bahas di bagian dua).

Metode siklus hidup onUpdate() juga disebut sebagai respons terhadap ACTION_APPWIDGET_RESTORED, yang disiarkan setiap kali sebuah widget dipulihkan dari cadangan.

Untuk sebagian besar proyek, metode onUpdate() akan berisi sebagian besar kode penyedia widget, terutama karena ini juga tempat Anda mendaftarkan penangan event widget Anda.

Event onDeleted

Method onDeleted() dipanggil setiap kali sebuah instance dari widget Anda dihapus dari App Widget Host, yang memicu siaran ACTION_APPWIDGET_DELETED sistem.

Event onDisabled

Metode ini disebut sebagai respons terhadap siaran ACTION_APPWIDGET_DISABLED, yang dikirim saat contoh terakhir widget Anda dihapus dari Host Widget Aplikasi. Misalnya, jika pengguna membuat tiga contoh widget Anda, metode onDisabled() hanya akan dipanggil saat pengguna menghapus contoh ketiga dan terakhir dari homescreen mereka.

Metode lifecycle onDisabled() adalah di mana Anda harus membersihkan sumber daya yang Anda buat di onEnabled(), jadi jika Anda membuat database di onEnabled(), maka Anda akan menghapusnya di onDisabled().

Event onRestored

Metode onRestored() dipanggil untuk menanggapi ACTION_APPWIDGET_RESTORED, yang disiarkan setiap kali sebuah instance dari widget aplikasi dipulihkan dari cadangan. Jika Anda ingin mempertahankan data yang persisten, Anda harus mengganti metode ini dan memetakan AppWidgetIds sebelumnya ke nilai yang baru, misalnya:

Jika Anda membuka file NewAppWidget.java yang dibuat oleh Android Studio secara otomatis, Anda akan melihat bahwa aplikasi tersebut sudah berisi implementasi beberapa metode siklus hidup widget ini:

File Layout Widget

File res/layout/new_app_widget.xml mendefinisikan layout widget kita, yang saat ini hanya latar belakang biru dengan kata Example yang tertulis di dalamnya.

Perbedaan utama antara membuat tata letak untuk Aktivitas dan membuat tata letak untuk widget adalah tata letak widget harus didasarkan pada RemoteViews, karena ini memungkinkan Android menampilkan tata letak dalam proses di luar aplikasi Anda (yaitu di homescreen pengguna).

RemoteViews tidak mendukung setiap jenis layout atau View, jadi saat membangun layout widget, Anda terbatas pada tipe berikut:

  • AnalogClock
  • Button
  • Chromometer
  • FrameLayout
  • GridLayout
  • ImageButton
  • ImageView
  • LinearLayout
  • ProgressBar
  • RelativeLayout
  • TextView
  • ViewStub

Jika Anda membuat widget koleksi, Anda juga dapat menggunakan jenis berikut saat aplikasi Anda terpasang pada Android 3.0 dan yang lebih tinggi:

  • AdapterViewFlipper
  • GridView
  • ListView
  • StackView
  • ViewFlipper

Subclass dan keturunan dari Views dan kelas di atas tidak didukung.

Klik dan Gesek

Untuk memastikan pengguna tidak sengaja berinteraksi dengan widget saat mereka menavigasi di sekitar layar awal mereka, widget hanya akan merespons event OnClick.

Pengecualiannya adalah saat pengguna menghapus widget dengan menyeretnya ke dalam tindakan Uninstall homescreen mereka, karena dalam situasi ini widget Anda akan merespons isyarat gesek vertikal. Namun, karena interaksi ini dikelola oleh sistem Android, Anda tidak perlu khawatir menerapkan dukungan tangkapan vertikal di aplikasi Anda.

File Info Widget

File res/xml/new_app_widget_info.xml (juga dikenal sebagai file AppWidgetProviderInfo) mendefinisikan sejumlah properti widget, termasuk banyak pengaturan yang Anda pilih di menu Configure Component Android Studio, seperti dimensi minimum widget Anda dan apakah itu dapat ditempatkan di layar lockscreen.

File konfigurasi juga menentukan seberapa sering widget Anda meminta informasi baru dari layanan update App Widget. Memutuskan frekuensi ini mengharuskan Anda untuk mencapai keseimbangan yang rumit: interval pembaruan yang lebih lama akan membantu menghemat baterai perangkat, namun menempatkan jarak Anda terlalu jauh dan widget Anda mungkin menampilkan informasi yang kedaluwarsa.

Anda juga harus sadar bahwa sistem akan membangunkan perangkat tidur agar bisa mendapatkan informasi baru, jadi walaupun memperbarui widget Anda setiap setengah jam sekali mungkin tidak terdengar berlebihan, ini bisa mengakibatkan widget Anda membangunkan perangkat setiap 30 menit sekali, yaitu akan mempengaruhi konsumsi baterai

Jika Anda membuka file new_app_widget_info.xml proyek Anda, Anda akan melihat bahwa itu sudah mendefinisikan sejumlah properti widget, termasuk interval update.

Jika Anda memberi pilihan pada pengguna untuk memasang widget di layar lockscreen, ingatlah bahwa isi widget akan terlihat oleh siapa saja yang melirik layar lockscreen. Jika tata letak 'default' Anda berisi informasi pribadi atau berpotensi sensitif, maka Anda harus menyediakan tata letak alternatif agar widget Anda dapat digunakan saat ditempatkan di layar lockscreen.

File res/values/dimens.xml

Widget tidak terlihat terbaik saat mereka saling menekan, atau saat mereka berada di tepi homescreen.

Setiap kali widget Anda ditampilkan di Android 4.0 atau lebih tinggi, sistem operasi Android secara otomatis memasukkan beberapa padding antara frame widget dan kotak pembatas.

A widget consists of a bounding box frame widget margins widget padding and widget controls

Jika aplikasi Anda bergetar pada perangkat yang menjalankan apa saja lebih awal dari Android 4.0, widget Anda harus memasok padding ini sendiri.

Saat Anda membuat widget menggunakan menu File > New > Widget > AppWidget, Android Studio menghasilkan dua file dimens.xml yang menjamin widget Anda selalu memiliki padding yang benar, terlepas dari versi Android yang terpasang di dalamnya.

Anda akan menemukan kedua file ini di folder res proyek Anda:

res/values/dimens.xml

File ini mendefinisikan 8dpi padding yang perlu diberikan widget Anda kapan pun terpasang di level API 13 atau yang lebih baru.

res/values-v14/dimens.xml

Karena Android 4.0 dan yang lebih tinggi secara otomatis menerapkan padding ke setiap widget, padding yang disediakan widget Anda akan menjadi tambahan padding default ini.

Untuk memastikan widget Anda sejajar dengan ikon aplikasi atau widget lain yang telah ditempatkan pengguna di layar awal mereka, file dimens.xml ini menentukan bahwa widget Anda seharusnya tidak memberikan margin tambahan untuk Android 4.0 dan yang lebih tinggi:

Margin default ini membantu menyeimbangkan layar homescreen secara visual, jadi Anda harus menghindari modifikasi - Anda sama sekali tidak ingin widget Anda menjadi yang aneh.

Tata letak widget Anda sudah mengacu pada nilai dimensi ini (android:padding="@dimen/widget_margin") jadi hati-hati jangan sampai mengubah garis ini saat mengerjakan tata letak widget Anda.

Meskipun file dimens.xml ini adalah cara termudah untuk memastikan widget Anda selalu memiliki padding yang benar, jika teknik ini tidak sesuai untuk proyek khusus Anda, maka salah satu alternatifnya adalah membuat beberapa latar belakang sembilan patch dengan margin yang berbeda untuk tingkat API 14 dan lebih tinggi, dan level API 13 dan yang lebih rendah. Anda dapat membuat sembilan patch menggunakan tool 9-patch Android Studio's Draw, atau dengan program edting grafis khusus seperti Adobe Photoshop.

Proyek Manifest

Dalam file AndroidManifest.xml proyek Anda, Anda perlu mendaftarkan widget Anda sebagai BroadcastReceiver dan menentukan penyedia widget dan file AppWidgetProviderInfo yang widget ini harus digunakan.

Jika Anda membuka manifest, Anda akan melihat bahwa Android Studio telah menambahkan semua informasi ini untuk Anda.

Widget Picker Resource

File res/drawable/example_appwidget_preview.png adalah sumber drawable yang mewakili widget Anda di Penjelajah Widget.

Untuk mendorong pengguna memilih widget Anda dari semua opsi yang tersedia, drawable yang diinginkan ini harus menampilkan widget Anda, dikonfigurasikan dengan benar pada layar utama dan menampilkan banyak konten yang bermanfaat.

Saat membuat widget menggunakan menu File > New > Widget > AppWidget, Android Studio akan menghasilkan pratinjau drawable yang dapat dicadangkan secara otomatis (example_appwidget_preview.png).

Pada bagian kedua, saya akan menunjukkan kepada Anda bagaimana dengan cepat dan mudah mengganti stok drawable ini, dengan menggunakan tool bawaan Android Studio untuk menghasilkan gambar pratinjau Anda sendiri.

Membangun Layout Anda

Sekarang kita memiliki gambaran bagaimana file-file ini berkumpul untuk membuat widget aplikasi, mari kita memperluas fondasi ini dan membuat widget yang tidak lebih dari sekedar menampilkan kata Example pada latar belakang biru!

Kami akan menambahkan fungsi berikut ke widget kami:

  • TextView yang menampilkan label ID Widget Aplikasi.
  • TextView yang mengambil dan menampilkan ID untuk contoh widget tertentu ini.
  • TextView yang merespons event onClick dengan meluncurkan browser default pengguna dan memuat URL.

Sementara kita bisa menarik tiga TextViews dari palet Android Studio dan menjatuhkannya ke kanvas, jika widget Anda terlihat bagus maka pengguna akan cenderung menempatkannya di homescreen mereka, jadi mari kita membuat beberapa sumber yang akan memberi widget ekstra visual menarik.

Buat Latar Belakang Widget

Saya akan membuat persegi panjang dengan sudut membulat, latar belakang gradien, dan border, yang akan saya gunakan sebagai latar belakang widget saya:

  • Klik kontrol folder proyek drawable Anda dan pilih New > Drawable resource file.
  • Beri nama file ini widget_background dan klik OK.
  • Masukkan kode berikut:

2. Buat Latar Belakang TextView

Selanjutnya, buat bentuk untuk digunakan sebagai latar belakang TextViews kami:

  • Klik kontrol folder proyek drawable Anda dan pilih New > Drawable resource file.
  • Nama file ini tvbackground lalu klik OK.
  • Masukkan kode berikut:

3. Buat Beberapa Styles

Saya juga akan menggunakan styles berikut:

  • widget_text. Efek bold yang akan saya terapkan pada teks widget.
  • widget_views. Berbagai margin dan padding yang akan saya terapkan pada TextViews saya.

Buka file styles.xml proyek Anda dan tambahkan yang berikut ini:

4. Bangun Layout Anda!

Sekarang semua sumber daya kita ada, kita bisa membuat layout widget kita. Buka file new_app_widget.xml dan tambahkan yang berikut ini:

Akhirnya, buka file strings.xml dan tentukan sumber string yang kami rujuk dalam tata letak kami:

Tab Desain Android Studio membantu Anda bekerja lebih efisien, dengan melihat pratinjau bagaimana tata letak Anda akan ditampilkan di berbagai perangkat. Beralih ke tab Desain jauh lebih mudah daripada menjalankan proyek Anda di perangkat Android setiap saat Anda membuat perubahan pada tata letak Anda.

Frustratingly, Android Studio tidak menyediakan skin widget khusus, jadi secara default layout widget Anda diberikan seperti Activity biasa, yang tidak memberikan wawasan terbaik tentang bagaimana widget Anda akan terlihat di homescreen pengguna.

Salah satu solusi potensial adalah membuat tata letak Anda menggunakan skin Android Wear (Square), yang sebanding dengan ukuran dan bentuk widget aplikasi Android:

  • Pastikan tab Device Android Studio dipilih.
  • Buka Device dropdown.
  • Pilih 280 x 280, hdpi (Square) dari menu dropdown.
Try rendering your widget layout using the Android Wear Square skin

Buat Widget Fungsionalitas

Sekarang widget kita terlihat bagiannya, saatnya untuk memberikan beberapa fungsi:

  • Retrieve and display data.  contoh widget diberikan sebuah ID saat ditambahkan ke Host Widget Aplikasi. ID ini tetap ada di seluruh siklus hidup widget dan akan benar-benar unik untuk contoh widget itu, bahkan jika pengguna menambahkan beberapa contoh widget yang sama ke homescreen mereka.
  • Add an action. Kami akan membuat OnClickListener yang meluncurkan browser default pengguna dan memuat URL.

Buka file penyedia widget (NewAppWidget.java) dan hapus baris yang mengambil sumber string appwidget_text:

Di blok updateAppWidget, sekarang kami perlu memperbarui placeholder R.id.id_value dengan ID unik dari widget ini:

Kita juga perlu membuat objek Intent yang berisi URL yang harus dimuat setiap kali pengguna berinteraksi dengan TextView ini.

Inilah file penyedia widget lengkap:

Menguji Widget

Sudah waktunya memasang widget ini untuk di uji!

  • Pasang proyek yang telah diperbarui di perangkat Android Anda.
  • Untuk memastikan Anda melihat versi terbaru widget ini, hapus contoh widget yang ada dari homescreen Anda.
  • Tekan sembarang bagian kosong dari homescreen, lalu pilih widget Anda dari Widget Picker.
  • Reposisi dan ubah ukuran widget sesuai keinginan.
Put your Android application widget to the test
  • Periksa apakah widget merespons peristiwa masukan pengguna, dengan memilih Ketuk untuk meluncurkan URL TextView. Widget aplikasi harus merespons dengan meluncurkan browser default Anda dan memuat URL.

Jika Anda telah mengikuti tutorial ini, maka pada titik ini Anda memiliki widget yang berfungsi penuh yang menunjukkan banyak konsep inti widget aplikasi Android. Anda juga bisa mendownload proyek selesai dari repo GitHub kami.

Kesimpulan

Di postingan ini kami memeriksa semua file yang dibutuhkan untuk mengirimkan widget aplikasi Android, sebelum membangun widget yang mengambil dan menampilkan beberapa data unik dan merespons peristiwa masukan pengguna.

Saat ini, ada satu fungsi utama yang masih hilang dari widget kami: tidak pernah menampilkan informasi baru! Di postingan berikutnya, widget ini kita beri kemampuan untuk mengambil dan menampilkan data baru secara otomatis, berdasarkan jadwal yang telah ditetapkan, dan langsung merespon event input pengguna.

Sementara itu, lihat beberapa postingan keren kami lainnya tentang pengembangan aplikasi Android di sini, di Envato Tuts+!

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.