30-50% off hundreds of digital assets! WordPress themes, video, music and more 30-50% Off Go to Sale
Advertisement
  1. Code
  2. Android SDK
Code

Kod Widget untuk Android: Input dan Paparan

by
Difficulty:IntermediateLength:LongLanguages:

Malay (Melayu) translation by Hamdan Veerlax (you can also view the original English article)

Sejak Android 1.5, widget aplikasi telah membolehkan pengguna mendapatkan maklumat, mengawal aplikasi, dan melaksanakan tugas penting, semuanya dari keselesaan skrin rumah mereka.

Dalam siri dua bahagian ini, saya akan menunjukkan kepada anda bagaimana untuk memberikan pengalaman pengguna yang lebih baik dengan menambah widget aplikasi ke projek Android anda.

Pada akhir siri, anda akan mencipta widget yang:

  • Memaparkan pelbagai set data.
  • Menjalankan tindakan unik apabila pengguna berinteraksi dengan Paparan tertentu dalam susun atur widget itu.
  • Kemas kini secara automatik setiap kali tempoh ditetapkan telah berlalu.
  • Kemas kini dengan data baru sebagai tindak balas kepada interaksi pengguna.

Dalam jawatan pertama ini, kami akan menggunakan alat terbina dalam Android Studio untuk dengan cepat dan mudah menghasilkan semua fail yang diperlukan untuk menyampaikan sebarang widget aplikasi Android. Kami kemudiannya akan mengembangkan asas ini untuk membuat widget yang mengambil dan memaparkan data dan bertindak balas kepada peristiwa onClick.

Apakah permohonan widget?

Widget aplikasi adalah aplikasi ringan, ringan yang biasanya jatuh ke dalam salah satu kategori berikut:

  • Widget maklumat. Sebuah widget scrollable yang memaparkan maklumat penting seperti sebuah widget cuaca atau jam.
  • Koleksi widget. Widget scrollable yang memaparkan siri unsur-unsur yang berkaitan, seperti sebuah galeri gambar atau artikel dari penerbitan sama. Koleksi widget biasanya disokong oleh sumber data, seperti Array atau pangkalan data. Sebuah widget koleksi mestilah termasuk sama ada ListView satu, GridView, StackView, atau AdapterViewFlipper.
  • Mengawal widget. Sebuah widget yang bertindak sebagai kawalan jarak jauh bagi permohonan anda, membenarkan pengguna untuk mencetuskan kerap digunakan fungsi tanpa semestinya perlu melancarkan permohonan anda. Aplikasi yang memainkan muzik sering memberikan widget yang membolehkan pengguna memainkan, menjeda, dan melangkau trek terus dari skrin utama mereka.
  • Widget hibrid. Kenapa menyekat diri anda untuk satu kategori, apabila anda boleh cherry-memilih unsur-unsur dari pelbagai kategori? Hanya akan menyedari bahawa percampuran dan sepadan boleh membawa kepada pengalaman pengguna yang mengelirukan, jadi untuk hasil yang terbaik, anda perlu merekabentuk widget anda dengan satu kategori dalam fikiran dan kemudian menambah unsur-unsur dari kategori lain seperti yang dikehendaki. Sebagai contoh, jika anda ingin membuat widget yang memaparkan ramalan cuaca hari ini tetapi juga membolehkan pengguna melihat ramalan untuk hari dan lokasi yang berbeza, maka anda harus membuat widget maklumat dan kemudian menambah elemen kawalan yang diperlukan selepas itu.

Sebagai tambahan kepada fungsi di atas, kebanyakan widget bertindak balas terhadap peristiwa onClick dengan melancarkan aplikasi berkaitan mereka, serupa dengan pintasan aplikasi, tetapi mereka juga dapat memberikan akses langsung ke kandungan tertentu dalam aplikasi itu.

Widget permohonan mesti diletakkan di dalam sebuah App Widget Host, paling biasa saham Android homescreen, walaupun ada sesetengah pihak ketiga Aplikasi Widget tuan rumah, seperti popular Nova Pelancar dan Pelancar Apex.

Sepanjang siri ini, saya akan bercakap tentang widget sebagai sesuatu yang anda letakkan di skrin utama, tetapi jika anda mempunyai ingatan samar-samar untuk meletakkan widget di skrin kunci, maka ini bukan hanya semacam impian yang hebat! Antara API tahap 17 dan 20, adalah mungkin untuk meletakkan widget di skrin utama atau skrin kunci.

Oleh kerana widget skrin kunci tidak lagi digunakan dalam tahap API 21, dalam siri ini, kami akan membuat widget untuk skrin utama sahaja.

Mengapa Harus Saya Buat Satu Widget Permohonan?

Terdapat beberapa sebab mengapa anda harus mempertimbangkan menambahkan widget aplikasi untuk projek Android terbaharu anda.

Akses Mudah kepada Maklumat dan Ciri Penting

Widget membenarkan pengguna melihat maklumat penting aplikasinya, terus dari skrin utama mereka. Contohnya, jika anda telah membangunkan aplikasi kalendar maka anda mungkin membuat widget yang memaparkan butiran tentang pelantikan seterusnya pengguna. Ini adalah jauh lebih mudah berbanding memaksa pengguna untuk melancarkan aplikasi anda dan berpotensi mengemudi pelbagai skrin, semata-mata untuk mendapatkan semula maklumat yang sama.

Jika anda mengembangkan widget kawalan (atau widget hibrid dengan unsur kawalan) maka pengguna juga boleh menyelesaikan tugas secara langsung dari skrin utama mereka. Melanjutkan dengan contoh kalendar kami, widget anda mungkin membenarkan pengguna membuat, mengedit dan membatalkan pelantikan, berpotensi tanpa perlu melancarkan aplikasi anda. Ini berpotensi untuk mengalih keluar beberapa langkah navigasi dari beberapa tugas penting aplikasi anda, yang hanya boleh memberi kesan positif kepada pengalaman pengguna!

Akses kepada semua aplikasi anda paling penting skrin terus

Menoreh sebuah widget biasanya membawa pengguna ke peringkat atas permohonan berkaitan, menyerupai satu pintasan aplikasi. Walau bagaimanapun, berbeza dengan aplikasi pintasan, widget boleh menyambung ke bidang-bidang tertentu dalam aplikasi berkaitan. Sebagai contoh, menoreh sebuah widget e-mel baru diterima notis mungkin melancarkan aplikasi dengan mesej baru telah dipilih, manakala menoreh e-mel baru cipta mungkin membawa mereka terus ke aplikasi anda ComposeEmail aktiviti.

Dengan membenamkan pelbagai pautan dalam susun atur widget anda, anda boleh memberikan akses mudah, satu ketuk ke semua Aktiviti paling penting apl anda.

Buat Pangkalan Pengguna yang Setia, Terlibat

Seluruh ledakan Pokemon Go dan penurunan berikutnya terbukti, mendapatkan satu ton orang untuk memuat turun aplikasi anda tidak menjamin asas pengguna setia secara automatik yang masih akan menggunakan apl, hari, minggu atau bahkan bulan ke bawah.

Pengguna mudah alih adalah kumpulan yang cukup berubah-ubah, dan dengan memori yang tersedia pada telefon pintar Android biasa atau tablet anda yang semakin meningkat sepanjang masa, mudah menjejaki aplikasi yang telah anda pasangkan pada peranti anda. Kemungkinannya, jika anda mengambil telefon pintar Android atau tablet anda sekarang dan leret melalui laci aplikasi maka anda akan menemui sekurang-kurangnya satu aplikasi yang anda lupakan sepenuhnya.

Dengan membuat widget yang mempamerkan semua maklumat dan ciri paling berharga aplikasinya, anda memastikan setiap kali pengguna melayari skrin utama mereka, mereka diingatkan bukan hanya aplikasi anda, tetapi juga mempunyai beberapa kandungan yang hebat.

Menambah Widget App ke Projek Anda

Walaupun widget paling asas memerlukan banyak kelas dan sumber, tetapi apabila anda membuat widget menggunakan alat Android built-in, semua fail ini dihasilkan untuk anda. Oleh kerana tidak ada gunanya membuat pembangunan Android lebih keras daripada yang diperlukan, kami akan menggunakan alat ini untuk mendapatkan permulaan yang baik untuk membina widget kami.

Sebuah widget permohonan hendaklah sentiasa terikat kepada aplikasi asas, supaya mewujudkan projek Android baru dengan seting pilihan anda.

Setelah Android Studio telah membina projek anda, pilih Fail> Baru> Widget> AppWidget dari bar alat Android Studio. Ini melancarkan menu Konfigurasi Komponen di mana anda boleh menentukan beberapa tetapan permulaan widget anda.

Configure your widgets settings in Android Studio

Kebanyakan opsyen ini adalah cukup telah jelas dengan sendirinya, tetapi terdapat beberapa yang akan bernilai menerokai dengan lebih terperinci.

Resizable (API 12+)

Jika sebuah widget resizable, kemudian pengguna boleh meningkatkan atau mengurangkan bilangan ''sel'' ia menduduki homescreen mereka, oleh long-mendesak widget dan kemudian mengheret mengendalikan biru yang muncul sekitar rangka yang.

Di mana sahaja mungkin, anda harus memberi widget anda keupayaan untuk mengubah saiz secara mendatar dan menegak, kerana ini akan membantu widget anda menyesuaikan diri dengan pelbagai konfigurasi skrin dan setup skrin utama. Sekiranya pengguna mempunyai skrin utama yang berantakan, maka mungkin widget anda mungkin sesuai ke skrin utama, kecuali widget anda boleh disesuaikan semula.

Jika anda ingin membuat widget tanpa resizable, kemudian buka menu turun turun Resizable dan pilih sama ada Hanya secara mendatar, Hanya menegak, atau Tidak resizable.

Lebar dan Ketinggian Minimum

Lebar dan ketinggian minimum menentukan bilangan sel widget anda pada mulanya akan ditempatkan apabila ia diletakkan pada skrin utama.

Bagi widget resizable, ini adalah paling kecil pengguna boleh saiz widget anda, supaya anda boleh menggunakan nilai-nilai untuk mengelakkan pengguna daripada mengecut widget anda ke titik di mana ia menjadi tidak boleh digunakan.

Jika widget anda tidak resizable, maka nilai minimum Kelebaran dan ketinggian adalah widget anda kekal lebar dan tinggi.

Untuk meningkatkan peluang sebuah widget daripada pemasangan selesa merentasi pelbagai jenis homescreens, adalah disyorkan bahawa anda tidak pernah menggunakan apa-apa yang lebih besar daripada 4 oleh 4 bagi nilai minimum Kelebaran dan ketinggian.

Manakala tepat Kelebaran dan ketinggian homescreen yang ''your'' berbeza-beza antara peranti, anda boleh mendapatkan anggaran berapa banyak DPIs (titik per inci) widget anda akan menduduki menggunakan formula seperti berikut:

Sebagai contoh, jika widget anda adalah sel-sel 2 x 3:

Widget ini akan menduduki sekitar 110 x 180 DPIs pada pengguna homescreen. Jika nilai-nilai tersebut tidak selaras dengan dimensi sel-sel peranti tertentu, maka Android akan secara automatik pusingan widget anda untuk saiz sel yang terdekat.

Mengkaji semua pilihan dalam menu ini dan membuat sebarang perubahan yang diingini (saya saya melekat dengan lalai) dan kemudian klik Selesai.

Android Studio kini akan menjana semua fail dan sumber yang diperlukan untuk menyampaikan sebuah widget asas permohonan. Widget ini tidak betul-betul menarik (ia adalah pada dasarnya hanya satu blok biru dengan perkataan Contoh yang ditulis menyeberangi) tetapi ia adalah sebuah widget yang praktikal yang anda boleh menguji pada peranti anda.

Untuk menguji widget:

  • Pasang projek anda pada peranti Android yang fizikal atau AVD (peranti Android maya).
  • Pelancaran Pengutip Widget di Android dengan menekan mana-mana ruang kosong pada homescreen tersebut, dan kemudian menoreh perkataan Widget yang muncul di bahagian bawah skrin.
  • Leret melalui pengutip Widget sehingga anda melihat widget Contoh biru.
  • Tekan ke bawah pada widget ini untuk menjatuhkannya ke homescreen anda.
  • Masukkan mod mensaiz semula dengan menekan widget sehingga set biru mengendalikan muncul, dan kemudian seret mengendalikan ini untuk meningkatkan atau mengurangkan bilangan sel yang menduduki widget ini.
Test your widget on an Android Virtual Device

Meneroka Fail Widget Permohonan

Widget ini mungkin tidak melakukan semua itu, tetapi ia merangkumi semua kelas dan sumber yang akan kami usahakan sepanjang siri ini, jadi mari kita melihat fail-fail ini dan peranan yang mereka mainkan dalam menyampaikan widget aplikasi.

NewAppWidget.java

Pembekal widget ada kelas kemudahan yang mengandungi kaedah-kaedah yang digunakan untuk pengaturcaraan antaramuka dengan sebuah widget melalui acara-acara siaran. Di bawah penutup, sebuah widget pada asasnya adalah hanya BroadcastReceiver yang boleh bertindak balas terhadap tindakan yang pelbagai, seperti pengguna meletakkan contoh widget baru homescreen mereka.

Terutamanya, pemberi widget aplikasi adalah di mana anda akan menentukan kaedah kitaran widget anda, yang sama ada mendapat dipanggil untuk setiap contoh widget atau keadaan tertentu sahaja.

Walaupun kita cenderung untuk memikirkan sebuah widget sebagai satu entiti yang tempat pengguna pada homescreen mereka sekali, ada apa-apa untuk menghalang mereka dari mewujudkan beberapa unsur widget sama. Mungkin widget anda adalah disesuaikan, ke titik di mana keadaan yang berbeza boleh mempunyai fungsi yang berbeza, atau mungkin pengguna hanya suka widget anda begitu banyak yang mereka mahu untuk plaster seluruh homescreen mereka!

Mari lihat kaedah kitar hayat yang berbeza yang boleh anda lakukan dalam kelas pembekal widget:

Acara onReceive

Android memanggil kaedah onReceive() pada penyiar Broadcast yang berdaftar setiap kali peristiwa yang dinyatakan berlaku.

Anda biasanya tidak perlu melaksanakan kaedah ini secara manual, seperti golongan AppWidgetProvider secara automatik menapis semua widget siaran dan mengagihkan operasi kepada kaedah yang sesuai.

OnEnabled acara

Kaedah kitaran hidup onEnabled() dipanggil sebagai tindak balas kepada ACTION_APPWIDGET_ENABLED, yang disiarkan apabila pengguna menambah contoh pertama widget anda ke skrin utama mereka. Jika pengguna membuat dua contoh widget anda, maka onEnabled() dipanggil untuk contoh pertama, tetapi bukan untuk yang kedua.

Kaedah kitaran ini adalah di mana anda melakukan apa-apa persediaan yang hanya perlu berlaku sekali untuk semua widget kejadian seperti mewujudkan Pangkalan data atau menyediakan perkhidmatan.

Ambil perhatian bahawa jika pengguna menghapuskan semua unsur widget anda daripada peranti mereka dan kemudian mencipta contoh baru, maka ini adalah dikelaskan sebagai unsur pertama, dan oleh yang demikian kaedah onEnabled() akan dipanggil sekali lagi.

Acara onAppWidgetOptionsChanged

Kaedah kitaran ini dipanggil sebagai tindak balas kepada ACTION_APPWIDGET_OPTIONS_CHANGED, yang disiarkan apabila contoh widget yang dicipta dan setiap kali itu widget disaizkan semula. Anda boleh menggunakan kaedah ini untuk mendedahkan atau menyembunyikan kandungan yang berdasarkan bagaimana pengguna saiz widget anda, walaupun panggil balik ini hanya disokong dalam Android 4.1 dan lebih tinggi.

Acara onUpdate

Kaedah kitar hayat onUpdate() dipanggil setiap masa:

  • Selang kemas kini telah berlalu.
  • Pengguna menjalankan tindakan yang mencetuskan kaedah onUpdate().
  • Pengguna meletakkan contoh baru bagi widget pada homescreen mereka (kecuali widget anda mengandungi konfigurasi aktiviti yang kami akan meliputi pada bahagian dua).

Kaedah kitaran onUpdate() juga dikenali sebagai tindak balas kepada ACTION_APPWIDGET_RESTORED, yang disiarkan apabila sebuah widget diambil semula daripada sandaran.

Bagi kebanyakan projek, kaedah onUpdate() akan mengandungi sejumlah besar kod pembekal widget, terutamanya kerana ia adalah juga di mana anda mendaftar pengendali acara widget anda.

OnDeleted acara

Kaedah onDeleted() dipanggil setiap kali sebuah instance dari widget anda dihapuskan dari Aplikasi Widget tuan rumah, yang mencetuskan sistem ACTION_APPWIDGET_DELETED siaran.

OnDisabled acara

Kaedah ini dipanggil sebagai tindak balas kepada siaran ACTION_APPWIDGET_DISABLED, yang dihantar apabila instance lepas dari widget anda dialih keluar daripada Aplikasi Widget tuan rumah. Sebagai contoh, jika pengguna telah mewujudkan tiga contoh widget anda, maka kaedah onDisabled() hanya akan dipanggil apabila pengguna membuang unsur yang ketiga dan akhir dari homescreen mereka.

Kaedah kitaran onDisabled() adalah di mana anda perlu membersihkan sehingga mana-mana sumber yang anda cipta dalam onEnabled(), jadi jika anda menyediakan pangkalan data dalam onEnabled() maka anda akan menghapuskannya dalam onDisabled().

OnRestored acara

Kaedah onRestored() yang dikenali sebagai tindak balas kepada ACTION_APPWIDGET_RESTORED, yang disiarkan apabila sebuah instance dari sebuah widget permohonan diambil semula daripada sandaran. Jika anda ingin mengekalkan sebarang data yang berterusan, maka anda akan perlu untuk mengatasi kaedah ini dan remap AppWidgetIds sebelumnya kepada nilai-nilai yang baru, contohnya:

Jika anda membuka fail NewAppWidget.java yang Android Studio dihasilkan secara automatik, maka anda akan melihat bahawa ia sudah mengandungi pelaksanaan untuk beberapa kaedah kitaran hayat widget ini:

Widget susun atur fail

Fail res/susunatur/new_app_widget.xml mentakrifkan susun atur widget kami, yang pada masa ini hanya latar belakang biru dengan perkataan Contoh yang ditulis di dalamnya.

Perbezaan utama antara mewujudkan susun atur untuk aktiviti dan mewujudkan susun atur bagi sebuah widget adalah widget yang susun atur mestilah berdasarkan RemoteViews, kerana ini membolehkan Android untuk memaparkan susun atur di dalam proses di luar permohonan anda (iaitu atas homescreen pengguna).

RemoteViews tidak menyokong setiap jenis susun atur atau pandangan, apabila bangunan susun atur widget, anda adalah terhad kepada berikut:

  • AnalogClock
  • Butang
  • Chromometer
  • Susun atur kerangka
  • GridLayout
  • ImageButton
  • ImageView
  • LinearLayout
  • ProgressBar
  • RelativeLayout
  • TextView
  • ViewStub

Jika anda membuat widget pengumpulan, maka anda juga boleh menggunakan jenis berikut apabila aplikasi anda dipasang pada Android 3.0 dan lebih tinggi:

  • AdapterViewFlipper
  • GridView
  • ListView
  • StackView
  • ViewFlipper

Subclasses dan keturunan di atas pandangan dan kelas-kelas tidak disokong.

Klik dan sentuhan

Untuk memastikan pengguna tidak sengaja berinteraksi dengan widget semasa mereka menavigasi di sekitar skrin utama mereka, widget hanya bertindak balas pada acara onClick.

Pengecualian adalah apabila pengguna membuang widget dengan menyeretnya ke arah tindakan Uninstall skrin utama mereka, seperti dalam situasi ini, widget anda akan bertindak balas terhadap isyarat leretan menegak. Walau bagaimanapun, sejak interaksi ini diuruskan oleh sistem Android, anda tidak perlu bimbang tentang melaksanakan sokongan sapuan menegak dalam aplikasi anda.

Fail maklumat Widget

Fail res/xml/new_app_widget_info.xml (juga dikenali sebagai fail AppWidgetProviderInfo) mentakrifkan beberapa ciri widget, termasuk banyak tetapan yang anda pilih dalam menu Komponen Konfigurasi Android Studio, seperti dimensi minimum widget anda dan sama ada ia boleh diletakkan pada skrin kunci.

Fail konfigurasi juga menentukan berapa kerap widget anda meminta maklumat terbaru daripada servis pengemaskinian Aplikasi Widget. Menentukan frekuensi ini memerlukan anda untuk keseimbangan rumit: Kemaskini lagi selang akan membantu menjimatkan bateri peranti, tetapi letakkan selang anda terlalu berjauhan dan widget anda boleh memaparkan maklumat nyata ketinggalan zaman.

Anda juga harus sedar bahawa sistem akan bangun tidur peranti perintah mendapatkan semula maklumat, jadi walaupun mengemaskini widget anda sekali setiap setengah jam mungkin tidak bunyi berlebihan yang baru, ia boleh mengakibatkan anda widget yang bangun peranti sekali setiap 30 minit, yang akan mempengaruhi penggunaan bateri.

Jika anda membuka fail new_app_widget_info.xml projek anda, maka anda akan melihat bahawa ia telah mentakrifkan beberapa hartanah widget, termasuk selang pengemaskinian.

Sekiranya anda memberi pengguna pilihan untuk meletakkan widget anda pada skrin kunci, ingatlah bahawa kandungan widget itu akan kelihatan kepada sesiapa sahaja yang melirik pada skrin kunci. Jika susun atur "lalai" anda mengandungi sebarang maklumat peribadi atau berpotensi yang sensitif, maka anda harus menyediakan susun atur alternatif untuk widget anda untuk digunakan apabila ia diletakkan pada kunci skrin.

Res/values/dimens.xml fail

Widget tidak melihat yang terbaik apabila mereka sedang menekan terhadap satu sama lain, atau apabila mereka melanjutkan ke tepi sangat homescreen itu.

Setiap kali widget anda dipaparkan pada Android 4.0 atau lebih tinggi, sistem pengendalian Android secara automatik memasukkan beberapa padding antara bingkai widget dan kotak sempadan.

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

Jika aplikasi anda mengalir pada peranti yang menjalankan apa-apa yang lebih awal daripada Android 4.0, maka widget anda perlu membekalkan padding ini sendiri.

Apabila anda mencipta sebuah widget yang menggunakan Fail > New > Widget > AppWidget menu, Android Studio menghasilkan dua fail dimens.xml yang menjamin widget anda sentiasa mempunyai padding betul, tanpa mengira versi Android ia dipasang.

Anda akan menemui kedua-dua fail-fail dalam folder mensyaratkan projek anda:

res/values/dimens.xml

Fail ini mentakrifkan dpi 8 daripada pad yang widget anda perlu menyediakan apabila ia dipasang pada tahap API 13 atau lebih awal.

res/nilai-v14/dimens.xml

Sejak Android 4.0 dan lebih tinggi secara automatik diguna pakai padding ke widget setiap, sebarang pad yang menyediakan widget anda akan di samping padding lalai ini.

Untuk memastikan widget anda diselaraskan dengan mana-mana ikon aplikasi atau widget lain yang pengguna telah meletakkan pada skrin utama mereka, fail dimens.xml ini menentukan bahawa widget anda seharusnya tidak memberikan margin tambahan untuk Android 4.0 dan lebih tinggi:

Margin lalai ini membantu visual baki homescreen, jadi anda harus mengelak daripada pengubahsuaian — anda tidak mahu widget anda akan keluar satu yang ganjil, selepas semua!

Susun atur widget anda sudah rujukan nilai dimensi ini (android:pad="@dimen/widget_margin") tidak semestinya tidak boleh berpindah garisan ini ketika bekerja pada susun atur widget anda.

Walaupun fail-fail dimens.xml adalah cara yang paling mudah untuk memastikan widget anda sentiasa mempunyai pengalas betul, jika teknik ini tidak sesuai untuk projek tertentu anda, maka satu alternatif adalah untuk mewujudkan pelbagai latar-belakang sembilan-patch dengan margin yang berbeza untuk Tahap API 14 dan lebih tinggi, dan tahap API 13 dan lebih rendah. Anda boleh mencipta sembilan-tampalan yang menggunakan Android Studio cabutan 9-patch alat, atau dengan grafik serta menyunting program tersebut seperti Adobe Photoshop.

Nyata Projek

Di dalam fail AndroidManifest.xml projek anda, anda perlu mendaftarkan widget anda sebagai BroadcastReceiver dan tentukan pembekal widget dan fail AppWidgetProviderInfo yang harus digunakan oleh widget ini.

Jika awda membuka nyata ini, anda akan melihat bahawa Android Studio pun telah ditambah semua maklumat ini untuk anda.

Widget Pengutip Sumber

Fail res/drawable/example_appwidget_preview.png itu adalah sumber drawable yang mewakili widget anda di pengutip Widget.

Untuk menggalakkan pengguna untuk memilih widget anda daripada semua pilihan yang tersedia, ini drawable perlu menunjukkan widget anda dikonfigurasi pada homescreen yang betul dan memaparkan banyak kandungan yang berguna.

Apabila anda mencipta sebuah widget yang menggunakan fail > New > Widget > menu AppWidget, Android Studio menjana preview drawable secara automatik (example_appwidget_preview.png).

Pada bahagian dua, saya akan akan menunjukkan anda bagaimana untuk dengan cepat dan mudah menggantikan saham drawable, dengan menggunakan alat-alat yang terbina dalam Android Studio untuk menjana imej pratonton sendiri.

Membina Tata Letak Anda

Sekarang kita mempunyai gambaran keseluruhan bagaimana fail-fail ini datang bersama-sama untuk membuat widget aplikasi, mari kita meluaskan asas ini dan buat widget yang lebih daripada sekadar memaparkan Contoh perkataan pada latar belakang biru!

Ke widget kami, kami akan menambah fungsi-fungsi berikut:

  • TextView yang memaparkan satu label Permohonan Widget ID.
  • TextView yang mengambil dan memaparkan ID untuk contoh widget tertentu ini.
  • TextView yang bertindak balas kepada peristiwa onClick dengan melancarkan pelayar lalai pengguna dan memuatkan URL.

Walaupun kita hanya boleh seret TextViews tiga dari palet Android Studio dan lepaskan mereka ke kanvas, jika widget anda kelihatan baik kemudian pengguna akan lebih cenderung untuk meletakkan di homescreen mereka, jadi Mari kita mencipta beberapa sumber yang akan memberi kami rayuan tambahan visual widget.

Buat Latar Belakang Widget

Saya akan membuat segi empat dengan sudut bulat, latar belakang kecerunan, dan sempadan, yang akan saya gunakan sebagai latar belakang untuk widget saya:

  • Kawalan-klik folder drawable projek anda dan pilih New > fail sumber Drawable.
  • Nama widget_background fail ini dan klik OK.
  • Masukkan kod berikut:

2. Buat Latar Belakang TextView

Seterusnya, mencipta bentuk yang akan digunakan sebagai latar belakang untuk TextViews kami:

  • Control-click folder drawable projek anda dan pilih New> Drawable resource file.
  • Nama tvbackground fail ini dan kemudian klik OK.
  • Masukkan kod berikut:

3. Mencipta Sesetengah Gaya

Saya juga akan menggunakan gaya berikut:

  • widget_text. Kesan yang tebal yang akan memohon untuk widget yang teks.
  • widget_views. Pelbagai margin dan padding yang saya akan memohon kepada TextViews saya.

Buka fail styles.xml projek anda dan tambahkan yang berikut:

4. Membina Talaletak Anda!

Sekarang semua sumber kami ada, kami boleh membuat susun atur widget kami. Buka fail new_app_widget.xml dan tambahkan yang berikut:

Akhirnya, buka fail strings.xml dan tentukan sumber rentetan yang kami rujuk dalam susun atur kami:

Tab Reka bentuk Android Studio membantu anda bekerja dengan lebih cekap, dengan melihat cara letakkan layout anda dalam pelbagai peranti. Beralih ke tab Reka bentuk adalah jauh lebih mudah daripada menjalankan projek anda pada peranti Android setiap kali anda membuat perubahan pada susun atur anda.

Dengan frustrasi, Android Studio tidak membekalkan kulit widget berdedikasi, jadi secara lalai susun atur widget anda diberikan seperti Aktiviti biasa, yang tidak memberikan wawasan terbaik ke atas bagaimana widget anda akan melihat pada skrin utama pengguna.

Satu penyelesaian yang berpotensi adalah untuk membuat susun atur anda menggunakan kulit Android Wear (Square), yang setanding dengan saiz dan bentuk widget aplikasi Android:

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

Buat Fungsi Widget

Kini widget kami kelihatan bahagian, sudah tiba masanya untuk memberikan beberapa fungsi:

  • Ambil dan paparkan data. Setiap contoh widget diberikan ID apabila ia ditambahkan ke App Widget Host. ID ini berterusan merentasi kitaran hayat widget dan akan menjadi unik kepada contoh widget itu, walaupun pengguna menambah beberapa contoh widget yang sama ke skrin utama mereka.
  • Tambah tindakan. Kami akan mencipta OnClickListener yang melancarkan penyemak imbas lalai pengguna dan memuat URL.

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

Dalam blok pembaruanAppWidget, kami kini perlu mengemas kini pemegang tempat R.id.id_value dengan ID unik widget:

Kami juga perlu mencipta Objek Intent yang mengandungi URL yang harus dimuatkan apabila pengguna berinteraksi dengan TextView ini.

Berikut adalah pembekal widget lengkap:

Menguji Widget

Sudah tiba masanya untuk meletakkan widget ini ke ujian!

  • Pasang projek yang dikemaskini pada peranti Android anda.
  • Untuk memastikan anda melihat versi terkini widget ini, alih keluar sebarang contoh widget yang ada dari skrin utama anda.
  • Tekan mana-mana bahagian kosong skrin utama, dan kemudian pilih widget anda dari Picker Widget.
  • Ralat semula dan ubah saiz widget yang dikehendaki.
Put your Android application widget to the test
  • Periksa bahawa widget bertindak balas kepada peristiwa input pengguna, dengan memilih Sentuh untuk melancarkan TextView URL. Widget aplikasi harus bertindak balas dengan melancarkan pelayar lalai anda dan memuat URL.

Sekiranya anda telah mengikuti tutorial ini, maka pada masa ini anda mempunyai widget berfungsi sepenuhnya yang menunjukkan banyak konsep utama widget aplikasi Android. Anda juga boleh memuat turun projek siap dari repositori GitHub kami.

Kesimpulan

Dalam siaran ini, kami memeriksa semua fail yang diperlukan untuk menyampaikan widget aplikasi Android, sebelum membina widget yang mengambil dan memaparkan beberapa data yang unik dan bertindak balas kepada acara input pengguna.

Pada masa ini, terdapat satu fungsi utama yang masih hilang dari widget kami: ia tidak akan memaparkan apa-apa maklumat baru! Dalam jawatan seterusnya, kami akan memberikan widget ini keupayaan untuk mengambil dan memaparkan data baru secara automatik, berdasarkan jadual yang ditetapkan, dan dalam respons langsung kepada peristiwa input pengguna.

Sementara itu, lihat beberapa jawatan hebat kami yang lain mengenai perkembangan aplikasi Android di sini di Envato Tuts+!

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.