Luo Android-widget sovelluksellesi

Kirjoittaja: Lewis Jackson
Luomispäivä: 13 Saattaa 2021
Päivityspäivä: 1 Heinäkuu 2024
Anonim
Inventaario Tehdenissä uudella inventointiohjelmalla
Video: Inventaario Tehdenissä uudella inventointiohjelmalla

Sisältö


Käyttöjärjestelmän alkuajoista lähtien Android-widgetit ovat antaneet käyttäjille mahdollisuuden harjoittaa suosikkisovellustaan ​​kotinäytön mukavuudesta. Joten miten luot Android-widgetin?

Widgetit antavat sovelluksen kehittäjälle arvokkaan läsnäolon käyttäjän aloitusnäytössä. Sen sijaan, että heidät poistuisi näkymästä sovelluslaatikkoon, käyttäjille muistutetaan sovelluksestasi joka kerta he vilkaisevat etusivuaan - samalla kun he saavat esikatselun sovelluksesi mielenkiintoisimmasta ja hyödyllisimmästä sisällöstä.

Widgetit antavat sovelluksellesi arvokkaan läsnäolon käyttäjän aloitusnäytössä

Tässä artikkelissa esittelen sinulle, kuinka tarjota parempi käyttökokemus ja samalla rohkaista käyttäjiä käyttämään sovellustasi luomalla Android-widget! Tämän artikkelin loppuun mennessä olet luonut vieritettävän kokoelma-widgetin, joka näyttää täydellisen tietojoukon käyttäjän aloitusnäytössä.


Varmistaa, että toimitat käyttäjien kaltaisen widgetin haluta sijoittamiseksi aloitusnäyttöön luomme myös kokoonpanotoiminnon, jonka avulla käyttäjät voivat mukauttaa widgetin sisältöä, ulkoasua ja ominaisuuksia. Lopuksi osoitan, kuinka voit kannustaa ihmisiä käyttämään widgettiä luomalla Widget Preview -kuvan, joka näyttää parasta, mitä widgetisi tarjoaa.

Lue myös: Kehitys taitettavia laitteita varten: Mitä sinun tarvitsee tietää

Mitä ovat Android-widgetit?

Sovelluswidget on kevyt, pienoissovellus, joka elää käyttäjän aloitusnäytössä.

Android-widgetit voivat tarjota valikoiman sisältöä, mutta yleensä ne kuuluvat johonkin seuraavista luokista:


  • Tieto-widget. Tämä on vierittämätön widget, joka näyttää joitain tietoja, kuten tämän päivän sääennuste tai päivämäärä ja aika.
  • Kokoelman widgetit. Tämä on vieritettävä widget, joka näyttää joukon liittyviä tietoja, jotka on muotoiltu ListView-, GridView-, StackView- tai AdapterViewFlipper-tiedoiksi. Keräyswidgetit ovat yleensä tietolähteen, kuten tietokannan tai taulukon, tukemia.
  • Ohjaa widgettejä. Nämä widgetit toimivat kaukosäätimenä, jonka avulla käyttäjät voivat olla vuorovaikutuksessa sovelluksesi kanssa, ilman täytyy tuoda se etualalle. Sovelluksissa, jotka toistavat mediaa, kuten podcasteja tai musiikkia, on usein hallintawidgetit, joiden avulla käyttäjä voi käynnistää Toisto-, Keskeytä- ja Ohita-toiminnot suoraan kotinäytöltä.
  • Hybridi-widgetit. Joskus saatat pystyä tarjoamaan paremman käyttökokemuksen yhdistämällä elementtejä useista luokista. Esimerkiksi, jos olet kehittämässä hallintaohjelmaa musiikkisovellukselle, voit tarjota Toista, Keskeytä ja Ohita-ohjaimet, mutta voit myös päättää näyttää joitain tietoja, kuten kappaleen otsikon ja esittäjän. Jos päätät sekoittaa ja sovittaa, älä hävitä! Widgetit tarjoavat yleensä parhaan käyttökokemuksen, kun ne tarjoavat helpon pääsyn pieneen määrään oikea-aikaista, asiaan liittyvää tietoa tai muutamaan yleisesti käytettyyn ominaisuuteen. Jotta hybridi-widgetit pysyisivät kevyinä, on suositeltavaa tunnistaa widgetien ensisijainen luokka, kehittää sitä kyseisen luokan mukaan ja sitten lisää muutama elementti widgetin toissijaisesta luokasta.

Tarvitseeko projekti todellakin sovelluswidgettiä?

On olemassa useita syitä, miksi sinun kannattaa harkita sovelluswidgetin lisäämistä Android-projektiisi.

Android-widgetit voivat parantaa käyttökokemusta

Yleensä, mitä vähemmän navigointivaiheita tarvitaan tehtävän suorittamiseen, sitä parempi käyttökokemus.

Antamalla sovelluswidgetin, voit poistaa useita navigointivaiheita sovelluksesi yleisimmin käytetyistä vuoista. Parhaimmassa tapauksessa käyttäjät voivat saada tarvitsemansa tiedot vain vilkaisemalla etusivulleen tai suorittaa haluamasi tehtävän yksinkertaisesti napauttamalla painiketta ohjausohjelmassa.

Tehokkaampi kuin sovelluksen pikavalinnat

Sovelluswidgetit reagoivat usein onClick-tapahtumiin käynnistämällä liittyvän sovelluksen ylin taso, kuten sovelluksen pikakuvake. Widgetit voivat kuitenkin myös tarjota suoran pääsyn tiettyihin sovelluksen toimintoihin, esimerkiksi napauttamalla widgetin Uusi vastaanotettu -ilmoitusta saattaa käynnistää liittyvän sovelluksen uuden jo avoinna olevan kanssa.

Upottamalla useita linkkejä widgetin ulkoasuun, voit tarjota pääsyn kaikkiin sovelluksen tärkeimpiin toimintoihin yhdellä painalluksella poistamalla entistä enemmän navigointivaiheita yleisimmin käytetyistä virtauksista.

Upottamalla useita linkkejä widgetin ulkoasuun, voit tarjota pääsyn yhdellä painalluksella kaikkiin sovelluksesi tärkeimpiin toimintoihin.

Huomaa, että widgetit reagoivat vain onClick-tapahtumiin, mikä estää käyttäjiä tekemästä vahingossa vuorovaikutusta widgetisi kanssa, kun he pyörittävät aloitusnäyttöä. Ainoa poikkeus on, kun käyttäjä yrittää poistaa widgetisi vetämällä sitä etusivunsa Poista-toimintoon, koska tässä tilanteessa widget vastaa pystysuoraan pyyhkäisyliikkeeseen.

Tätä vuorovaikutusta hallinnoi Android-järjestelmä, joten sinun ei tarvitse huolehtia siitä, että pystysuora pyyhkäisyn tuki otetaan manuaalisesti käyttöön widgetissä.

Luo Android-widget pitkän aikavälin sitoutumisen edistämiseksi

Ihmisten vakuuttaminen lataamaan sovelluksesi on vasta ensimmäinen askel onnistuneen Android-sovelluksen luomiseen. Jos tartut omaan Android-älypuhelimeesi tai -tablettiisi ja siirryt sovelluslokeron läpi, löydät todennäköisesti useita sovelluksia, joita et ole käyttänyt päivinä, viikkoina tai mahdollisesti jopa kuukausina!

Lue myös:Facebook SDK: n käytön aloittaminen

Kun sovelluksesi on asennettu onnistuneesti käyttäjän laitteeseen, sinun on tehtävä ahkerasti työtä pitääkseen hänet kiinni ja nauttiaksesi sovelluksestasi. Sovelluksellesi läsnäolo aloitusnäytöllä voi olla tehokas työkalu pitkän aikavälin sitoutumisen edistämiseen yksinkertaisesti siksi, että se muistuttaa jatkuvasti sovelluksesi olemassaolosta!

Hyvin suunniteltu widget voi toimia myös jatkuvana ilmoituksena sovelluksellesi. Aina kun käyttäjä vilkaisee kotinäyttöään, widgetilläsi on mahdollisuus rohkaista heitä aktiivisesti uudelleen käyttämään sovellustasi esittämällä heille kaikki sovelluksesi mielenkiintoisimmat ja hyödyllisimmät sisällöt.

Luominen kokoelmasovellus widget

Tässä opetusohjelmassa rakennamme kokoelma-widget, joka näyttää taulukon vieritettävänä ListView-luettelona.

Ohjelman widgetin elinkaaren seuraamiseksi tämä widget laukaisee myös erilaisia ​​paahtoleipää liikkuessaan eri elinkaaritilojen läpi. Koulutuksen loppua kohti parannamme widgettiä mukautetulla esikatselukuvalla, joka näytetään Androidin widget -valitsimessa, ja kokoonpanotoiminnolla, jonka avulla käyttäjät voivat mukauttaa widgettiä ennen kuin ne laitetaan etusivulle.

Luo uusi Android-projekti valitsemasi asetuksilla ja aloitetaan!

Luo widgetisi ulkoasu

Aluksi määritellään widgetin käyttöliittymä (UI).

Sovelluksen widgetit näytetään prosessissa ulkopuolella sovelluksesi, joten voit käyttää vain ulkoasuja ja näkymiä, joita RemoteViews tukee.

Kun rakennat asetteluasi, olet rajoitettu seuraaviin:

  • AnalogClock
  • nappi
  • Kronometri
  • FrameLayout
  • GridLayout
  • ImageButton
  • ImageView
  • LinearLayout
  • Edistymispalkki
  • RelativeLayout
  • TextView
  • ViewStub
  • AdapterViewFlipper
  • GridView
  • Listanäkymä
  • StackView
  • ViewFlipper

Huomaa, että yllä olevien luokkien ja näkymien alaluokat ovat ei tuettu.

Luo uusi asetteluresurssitiedosto nimeltä list_widget.xml. Koska näytämme tietomme käyttämällä ListView-asetusta, tämä asettelu toimii pääasiassa säilönä a elementti:

Kokoelma-widget täytetään

Seuraavaksi meidän on luotava palveluntarjoaja ListView-sovelluksellemme. Luo uusi Java-luokka nimeltä DataProvider.java ja lisää seuraava:

tuo android.content.Context; tuo android.content.Intent; Tuo android.widget.RemoteViews; Tuo android.widget.RemoteViewsService; tuo java.util.ArrayList; tuo java.util.List; tuo staattinen android.R.id.text1; tuo staattinen android.R.layout.simple_list_item_1; julkisen luokan DataProvider toteuttaa RemoteViewsService.RemoteViewsFactory {Luettelo myListView = uusi ArrayList <> (); Konteksti mContext = nolla; julkinen DataProvider (kontekstiyhteys, tarkoitus) {mContext = konteksti; } @Kopioi julkinen tyhjä onCreate () {initData (); } @Opauta julkinen tyhjä onDataSetChanged () {initData (); } @Orride public void onDestroy () {} @Orride public int getCount () {return myListView.size (); } @Orride public RemoteViews getViewAt (int position) {RemoteViews view = new RemoteViews (mContext.getPackageName (), simple_list_item_1); view.setTextViewText (text1, myListView.get (sijainti)); paluunäkymä; } @Orride public RemoteViews getLoadingView () {return null; } @Orride public int getViewTypeCount () {return 1; } @Orvoi julkinen pitkä getItemId (int-sijainti) {paluu-sijainti; } @Orride public boolean hasStableIds () {return true; } yksityinen tyhjä initData () {myListView.clear (); varten (int i = 1; i <= 15; i ++) {myListView.add ("ListView item" + i); }}}

AppWidgetProvider: Widgetin määrittäminen

Jos haluat luoda Android-widgetin, sinun on luotava useita tiedostoja.

Ensimmäinen widget -kohtainen tiedostomme on AppWidgetProvider, joka on BroadcastReceiver, jossa määrität erilaisia ​​widget-elinkaaren menetelmiä, kuten menetelmä, jota kutsutaan, kun widget luodaan ensimmäisen kerran, ja menetelmä, jota kutsutaan, kun widget lopulta poistetaan.

Luo uusi Java-luokka (Tiedosto> Uusi> Java-luokka) nimeltä CollectionWidget.

Aluksi kaikkien widget-palveluntarjoajien tiedostojen on ulotuttava AppWidgetProvider-luokkaan. Sitten meidän on ladattava list_widget.xml -asetustiedostotiedosto RemoteViews-objektiin ja ilmoitettava AppWidgetManagerille päivitetystä RemoteViews-objektista:

public class CollectionWidget laajentaa AppWidgetProvider {staattinen void updateAppWidget (kontekstiyhteys, AppWidgetManager appWidgetManager, int appWidgetId) {// Instantiate RemoteViews -objektin // RemoteViews Views = new RemoteViews (context.getPackageoutName;); setRemoteAdapter (konteksti, näkymät); // Pyydä AppWidgetManager päivittämään sovelluswidget // appWidgetManager.updateAppWidget (appWidgetId, Views); }

Luo sovitin

Koska näytämme tietomme luettelossa, meidän on määritettävä setRemoteAdapter () -menetelmä AppWidgetProvider-ohjelmassa. SetRemoteAdapter () vastaa kutsumista AbsListView.setRemoteViewsAdapter (), mutta se on suunniteltu käytettäväksi sovelluswidgetissä.

Tässä menetelmässä meidän on määritettävä AdapterView-tunnus (R.id.widget_list) ja sen palvelun tarkoitus, joka lopulta toimittaa tiedot RemoteViewsAdapterille - me luomme tämän WidgetService-luokan pian.

yksityinen staattinen void setRemoteAdapter (kontekstiyhteys, @NonNull lopullinen RemoteViews-näkymä) {Views.setRemoteAdapter (R.id.widget_list, new Intent (konteksti, WidgetService.class)); }}

Widgetin elinkaarimenetelmien määritteleminen

AppWidgetProvider-sovelluksessa meidän on myös määriteltävä seuraavat widget-elinkaaren menetelmät:

Uuden sisällön hakeminen onUpdate-sovelluksella

OnUpdate ()-widgetin elinkaaren menetelmä vastaa päivittää widgetin näkymät uusilla tiedoilla.

Tätä menetelmää kutsutaan joka kerta:

  • Käyttäjä suorittaa toiminnon, joka laukaisee manuaalisesti onUpdate () -menetelmän.
  • Sovelluksen määritetty päivitysväli on kulunut.
  • Käyttäjä sijoittaa uuden widget-esiintymän aloitusnäyttöön.
  • ACTION_APPWIDGET_RESTORED lähetys-tarkoitus lähetetään AppWidgetProviderille. Tämä lähetystarkoitus käynnistyy, jos widget palautetaan koskaan varmuuskopiosta.

Täällä voit myös rekisteröidä kaikki tapahtumien käsittelijät, joita widgetisi pitäisi käyttää.

Päivittäessäsi Android-widgettiä on tärkeää muistaa, että käyttäjät voivat luoda useita esiintymiä samasta widgetistä. Esimerkiksi, widgetisi on muokattavissa, ja käyttäjä päättää luoda useita "versioita", jotka näyttävät erilaisia ​​tietoja, tai tarjoavat pääsyn yksilöllisiin toimintoihin.

Kun soitat osoitteeseenUpdate (), sinun on määritettävä, päivitätkö tämän widgetin jokaista esiintymää vai vain tiettyä ilmentymää. Jos haluat päivittää jokaisen ilmentymän, voit käyttää appWidgetIds, joka on joukko tunnuksia, jotka tunnistavat kaikki laitteen ilmentymät.

Päivitän seuraavassa katkelmassa kaikki esiintymät:

@Käytä julkinen tyhjä onUpdate (kontekstiympäristö, AppWidgetManager appWidgetManager, int appWidgetIds) {varten (int appWidgetId: appWidgetIds) {// Päivitä kaikki tämän widgetin esiintymät // updateAppWidget (konteksti, appWidgetManager, appWidgetId); } super.onUpdate (konteksti, appWidgetManager, appWidgetIds); }

Huomaa, että koodin pitämiseksi suoranaisena tämä onUpdate () -menetelmä ei tällä hetkellä tee mitään muutoksia widgettiin.

onEnabled: Alkuasetusten suorittaminen

OnEnabled () elinkaarimenetelmää kutsutaan vastauksena ACTION_APPWIDGET_ENABLED, joka lähetetään, kun widgetisi esiintymä lisätään aloitusnäyttöön ensimmäinen aika. Jos käyttäjä luo kaksi widget-esiintymääsi, onEnabled () kutsutaan ensimmäiseksi, mutta ei toiseksi.

OnEnabled () -syklin menetelmä on, jossa sinun on suoritettava kaikki tarvittavat asennukset kaikille widget-esiintymillesi, esimerkiksi luotava tietokanta, joka syöttää widget-tiedot.

Aion näyttää paahtoleipää, joten näet tarkalleen, milloin tätä elinkaaren menetelmää kutsutaan:

@Ylitä julkinen tyhjä onEnabled (kontekstiyhteys) {Toast.makeText (konteksti, "onEnabled nimeltään", Toast.LENGTH_LONG) .show (); }

Huomaa, että jos käyttäjä poistaa kaikki widgetisi esiintymät ja luo sitten uuden ilmentymän, se luokitellaan ensimmäiseksi ilmestykseksi, ja onEnabled () -syklin menetelmä kutsutaan uudelleen.

Siivous onDisabled-toiminnolla

OnDisabled () -menetelmää kutsutaan vastauksena ACTION_APPWIDGET_DISABLED, joka laukaistaan, kun käyttäjä poistaa kestää esimerkki widgetistäsi.

Tämä widget-elinkaari-menetelmä on, jossa sinun on puhdistettava kaikki onEnabled () -menetelmällä luodut resurssit, esimerkiksi poistettava onEnabled () -luettelossa luoma tietokanta.

Koodimme pitämiseksi suoranaisena näen vain paahtoleipää joka kerta, kun tämä menetelmä käynnistyy:

@Ylitä julkinen tyhjä onDisabled (kontekstiyhteys) {Toast.makeText (konteksti, "onDisabled nimeltään", Toast.LENGTH_LONG) .show (); }

Valmistunut AppWidgetProvider

CollectionWidget-tiedostosi pitäisi nyt näyttää tällaiselta:

tuo android.appwidget.AppWidgetManager; tuo android.appwidget.AppWidgetProvider; tuo android.content.Context; tuo androidx.annotation.NonNull; tuo android.content.Intent; Tuo android.widget.RemoteViews; tuo android.widget.Toast; // Laajenna AppWidgetProvider-luokasta // public class CollectionWidget laajentaa AppWidgetProvider {static void updateAppWidget (Context konteksti, AppWidgetManager appWidgetManager, int appWidgetId) {// Lataa asettelutiedosto tiedosto RemoteViews-objektiin (RemoteViews Views = new. RemoteViews Views = new. getPackageName (), R.layout.list_widget); setRemoteAdapter (konteksti, näkymät); // Informoi AppWidgetManager RemoteViews -objektista // appWidgetManager.updateAppWidget (appWidgetId, näkymät); } @Orride public void onUpdate (Kontekstikonteksti, AppWidgetManager appWidgetManager, int appWidgetIds) {varten (int appWidgetId: appWidgetIds) {updateAppWidget (konteksti, appWidgetManager, appWidgetId); } super.onUpdate (konteksti, appWidgetManager, appWidgetIds); } @Ylitä julkinen tyhjä onEnabled (kontekstiyhteys) {Toast.makeText (konteksti, "onEnabled nimeltään", Toast.LENGTH_LONG) .show (); } @Ylitä julkinen tyhjä onDisabled (kontekstiyhteys) {Toast.makeText (konteksti, "onDisabled nimeltään", Toast.LENGTH_LONG) .show (); } yksityinen staattinen void setRemoteAdapter (kontekstiyhteys, @NonNull lopulliset RemoteViews-näkymät) {Views.setRemoteAdapter (R.id.widget_list, new Intent (konteksti, WidgetService.class)); }}

AppWidgetProviderInfo-tiedosto

Sovellus-widget vaatii myös AppWidgetProviderInfo-tiedoston, joka määrittelee useita tärkeitä ominaisuuksia, mukaan lukien widgetin vähimmäismitat ja kuinka usein se tulisi päivittää.

AppWidgetProviderInfo-tiedosto tallennetaan projektisi res / xml-kansioon.

Jos projektissasi ei vielä ole tätä kansiota, sinun on luotava se:

  • Napsauta Control-napsauttamalla projektisi res-kansiota.
  • Valitse Uusi> Android-resurssihakemisto.
  • Avaa seuraavassa ikkunassa Resurssityyppi-pudotus ja valitse xml.
  • Hakemistonimen pitäisi päivittyä automaattisesti xml-tiedostona, mutta jos se ei ole, sinun on vaihdettava se manuaalisesti.
  • Napsauta OK.

Seuraavaksi luo kokoelma_widget_info-tiedosto, jota käytämme AppWidgetProviderInfo-tiedostona:

  • Napsauta Control-napsauttamalla projektisi xml-kansiota.
  • Valitse Uusi> XML-resurssitiedosto.
  • Nimeä tämä tiedosto kokoelma_widget_info.
  • Napsauta OK.

AppWidgetProviderInfo-tiedostossamme on määritettävä seuraavat ominaisuudet:

1. android: previewImage

Tämä piirustus edustaa sovelluswidgettiä laitteen Widget Picker -sovelluksessa.

Jos et anna previewImage-kuvaa, Android käyttää sen sijaan sovelluksesi kuvaketta. Voit rohkaista käyttäjiä valitsemaan widgetisi Widget Picker -sovelluksesta antamalla piirustus, joka näyttää kuinka widget näyttää miltä se on määritetty oikein käyttäjän aloitusnäytössä.

Helpoin tapa luoda esikatselukuva on käyttää Widget Preview -sovellusta, joka sisältyy Android-emulaattoriin. Tämän sovelluksen avulla voit määrittää widgetisi ja luoda sitten kuvan, jota voit sitten käyttää Android-projektissasi.

Luomme tämän kuvan heti, kun olemme lopettaneet widgetimme rakentamisen, joten toistaiseksi käytän väliaikaisesti esikatselukuvana automaattisesti luotavaa mipmap / ic_launcher -resurssia.

2. android: widgetCategory

Sovelluswidgetit on sijoitettava App Widget Host -sovelluksen sisään, joka on yleensä Android-aloitusnäyttö, mutta voi myös olla kolmannen osapuolen kantoraketti, kuten Evie Launcher tai Nova Launcher.

API-tasojen 17 ja 20 välillä oli mahdollista sijoittaa sovelluswidgetit aloitusnäyttöön tai lukitusnäyttö, mutta lukitusnäytön tuki oli vanhentunut API-tasolla 21.

Voit määrittää, voidaanko sovelluswidget sijoittaa aloitusnäyttöön, lukitusnäyttöön (johon Android viittaa “näppäinlukkoksi”) vai molempiin, käyttämällä android: widgetCategory -määritteitä. Koska widgettejä ei voi sijoittaa lukitusnäyttöön Androidin uusimmissa versioissa, kohdistamme vain aloitusnäyttöön.

Käyttäjän yksityisyyden säilyttämiseksi widgetissäsi ei pitäisi olla mitään arkaluontoisia tai yksityisiä tietoja, kun se on sijoitettu lukitusnäyttöön.

Jos annat käyttäjille mahdollisuuden sijoittaa widgetisi lukitusnäytölle, niin kuka tahansa käyttäjän laitteeseen vilkaiseva henkilö voi nähdä widgetisi ja sen kaiken sisällön. Käyttäjän yksityisyyden säilyttämiseksi widgetissäsi ei pitäisi olla mitään arkaluontoisia tai yksityisiä tietoja, kun se on sijoitettu lukitusnäyttöön. Jos widgetissäsi on henkilökohtaisia ​​tietoja, sinun kannattaa ehkä harkita erillisten aloitusnäyttö- ja lukitusnäyttöasettelujen tarjoamista.

3. android: alkuasettelu

Tämä on asetteluresurssitiedosto, jota widgetisi pitäisi käyttää, kun se asetetaan aloitusnäyttöön, mikä projektillemme on list_widget.xml.

4. android: resizeMode = ”vaaka | pystysuora”

Android: resizeMode -määritteen avulla voit määrittää, voidaanko widgetin kokoa muuttaa vaaka-, pystysuunnassa vai molemmilla akseleilla.

Jotta widgetisi näkyy ja toimii oikein useilla näytöillä, suositellaan, että sallit widgetin koon muuttamisen vaakatasossa. ja pystysuoraan, ellei sinulla ole erityistä syytä olla tekemättä sitä.

5. android: minHeight ja android: minWidth

Jos widgetisi on muutettavissa, sinun on varmistettava, että käyttäjä ei kutista widgettiä pisteeseen, josta se tulee käyttökelvoton. Voit määrittää minHeight- ja minWidth-määritteiden määrittäessäsi pienimmän, jonka sovellus kutistuu, kun käyttäjä muuttaa sitä.

Nämä arvot edustavat myös widgetin alkuperäistä kokoa, joten jos widgetisi ei ole koon mukainen, minHeight ja minWidth määrittelevät widgetin pysyvän koon.

6. android: updatePeriodMillis

AppWidgetProviderInfo on myös paikka, jossa voit määrittää, kuinka usein widgetin tulee pyytää uusia tietoja.

Pienin tuettu päivitysväli on kerran 1800000 millisekuntia (30 minuuttia). Vaikka ilmoitat lyhyemmän päivitysvälin, widget päivittyy silti vain puolen tunnin välein.

Vaikka haluat ehkä näyttää viimeisimmät tiedot mahdollisimman nopeasti, järjestelmä tahtoa herättää nukkuva laite uuden tiedon hakemiseksi. Toistuvat päivitykset voivat palaa laitteen akun kautta, etenkin silloin, kun laite on jätetty käyttämättä merkittäväksi ajaksi, kuten yön yli. Parhaan mahdollisen käyttökokemuksen tarjoaminen tarkoittaa tasapainon löytämistä akun kulutuksen rajoittamisen ja uuden tiedon toimittamisen välillä kohtuullisessa ajassa.

Sinun tulisi myös ottaa huomioon, millaista sisältöä widget näyttää.

Sinun tulisi myös ottaa huomioon, millaista sisältöä Android-widgetit näyttävät. Esimerkiksi sääwidgetin on ehkä joutunut hakemaan päivitetty ennuste vain kerran päivässä, kun taas uutisia näyttävän sovelluksen on päivitettävä useammin.

Tämän täydellisen tasapainon löytämiseksi joudut ehkä testaamaan widgettiä useilla päivitystaajuuksilla ja mittaamaan vaikutuksen akun kestoon ja widgetin sisällön ajantasaisuuteen. Jos sinulla on halukas testaajaryhmä, voit jopa asettaa A / B-testauksen nähdäksesi, vastaanotetaanko jotkut päivitystaajuudet positiivisemmin kuin toiset.

Aalso lukee: AndroidManifest.xml kaikki mitä sinun tarvitsee tietää

Lopuksi, kun olet löytänyt täydellisen päivitysvälin, kannattaa ehkä käyttää lyhyempää aikaväliä sovelluksen kehittämiseen ja testaamiseen. Voit esimerkiksi käyttää lyhyintä mahdollista päivitystaajuutta (android: updatePeriodMillis = ”1800000 ″), kun testaat, että sovelluksesi onUpdate () -menetelmä käynnistyy oikein, ja muuttaa sitten tätä arvoa ennen sovelluksen julkistamista yleisölle.

Valmistunut AppWidgetProviderInfo

Valmiiden kokoelma_widget_info.xml-tiedoston pitäisi näyttää tällaiselta:

Älä sotke käyttäjän kotinäyttöä!

Jotta kotinäyttö ei koskaan näyttäisi olevan sotkuinen, lisäämme widgettiimme joitain pehmusteita ja marginaaleja. Jos projektissasi ei ole jo dimens.xml-tiedostoa, sinun on luotava jokin seuraavista:

  • Napsauta Control-napsauttamalla projektisi arvokansiota.
  • Valitse Uusi> Arvot resurssitiedosto.
  • Anna tälle tiedostolle nimi himmennettynä.
  • Napsauta OK.

Avaa dimens.xml-tiedosto ja määrittele seuraavat marginaali- ja täytearvot:

10dp 8DP

Tietojen lähettäminen widgetille

Seuraavaksi meidän on luotava widget-palvelu, joka vastaa keräystietojemme lähettämisestä widgetille.

Luo uusi Java-luokka (Uusi> Java-luokka) nimeltä WidgetService ja lisää seuraava:

tuo android.content.Intent; Tuo android.widget.RemoteViewsService; julkisen luokan WidgetService laajentaa RemoteViewsService {@Orride public RemoteViewsFactory onGetViewFactory (Intent intent) {palauttaa uuden DataProvider (tämä, tarkoitus); }}

Widgetin rekisteröiminen manifestiin

Meidän on nyt tehtävä joitain muutoksia projektimme manifestiin.

Aloita avaamalla manifesti ja rekisteröimällä widget BroadcastReceiver-laitteeksi. Meidän on myös lisättävä tarkoitussuodatin android.appwidget.action.APPWIDGET_UPDATE-toimintoon:

Seuraavaksi sinun on määritettävä sovelluswidget-palveluntarjoaja:

Viimeinkin meidän on ilmoitettava palvelu, joka lähettää tietoja widgetillemme, joka tässä tapauksessa on WidgetService-luokka. Tämä palvelu vaatii android.permission.BIND_REMOTEVIEWS luvan:

Laita widget testisi

Jos olet seurannut tämän oppaan mukana, sinulla on nyt täydellinen kokoelma-widget, joka näyttää tietyt tiedot käyttäjän aloitusnäytössä.

Jos tämä oli tosielämän Android-projekti, sinun kannattaa yleensä laajentaa elinkaarimenetelmiä, erityisesti onUpdate () -menetelmää, mutta tämä on kaikki mitä tarvitsemme luodaksesi widgetin, jonka voit asentaa ja testata Android-laitteellesi:

  • Asenna tämä projekti yhteensopivaan Android-älypuhelimeen, -tabletiin tai AVD: hen (Android Virtual Device).
  • Paina pitkään mitä tahansa tyhjää aloitusnäytön osaa ja valitse Widgetit, kun sitä pyydetään; tämä käynnistää Widget Pickerin.
  • Pyyhkäise Widget Pickerin läpi, kunnes löydät juuri luomasi sovelluswidgetin.
  • Lisää tämä widget pitkään, kun haluat lisätä sen etusivullesi.
  • Koska tämä on kyseisen widgetin ensimmäinen esimerkki, onEnabled () -menetelmän tulisi suorittaa, ja näet ”onEnabled nimeltään” paahtolevyn.
  • Muuta widgetisi kokoa. Jos asetat tuetun vähimmäiskoko, tarkista, ettet voi kutistaa widgettiä tämän arvon ohi.
  • Testaa, että ListView vierittää odotetusti.
  • Seuraavaksi sinun on tarkistettava onDisabled () -menetelmä poistamalla widget. Paina widget-painiketta pitkään ja valitse sitten Poista aloitusnäytöstä. Koska tämä on tämän nimenomaisen widgetin viimeinen esimerkki, onDisabled () -menetelmän tulisi suorittaa, ja näet ”onDisabled nimeltään” paahtolevyn.

Tämä on kaikki mitä tarvitset toimivan Android-sovelluswidgetin toimittamiseen, mutta on olemassa muutamia lisäyksiä, jotka voivat usein parantaa käyttökokemusta. Seuraavissa osissa kehotamme käyttäjiä valitsemaan tämän widgetin Widget Picker -sovelluksesta luomalla esikatselukuvan, joka esittelee widgetin parhaimmillaan. Esitän sinulle myös kuinka luoda täysin muokattavissa oleva widget lisäämällä määritystoiminnan projektiisi.

Android-widget-esikatselukuvan luominen

Jos tartut Android-laitteeseesi ja pyyhkäiset Widget Pickerin läpi, huomaat, että jokaista widgettiä edustaa kuva, joka yleensä osoittaa, miltä tämä widget näyttää heti, kun se on määritetty käyttäjän aloitusnäytössä.

Kannustamaan käyttäjiä valitsemaan widgetisi, sinun on annettava esikatselukuva, joka korostaa kaikkia hyödyllisiä tietoja ja ominaisuuksia, joita widgetisi tarjoaa.

Voit luoda esikatselukuvan nopeasti ja helposti käyttämällä Widget Preview -sovellusta, joka sisältyy Android-emulaattoriin.

Huomaa, että Widget-esikatselu ei sisälly viimeisimpiin Android-järjestelmän kuviin, joten sinun on luotava AVD-tiedosto Nougatin (API-taso 25) tai aikaisemman avulla:

  • Asenna sovelluksesi AVD: hen, jonka käyttöjärjestelmä on API 25 tai vanhempi.
  • Avaa AVD: n sovelluslokero ja käynnistä Widget Preview -sovellus.
  • Widget-esikatselu näyttää luettelon jokaisesta sovelluksesta, joka on tällä hetkellä asennettu tähän AVD: hen. Valitse sovelluksesi luettelosta.

  • Widgetisi näkyy nyt tyhjällä taustalla. Vietä hetki koon ja mukauta widgetisi, kunnes se näyttää parasta, mitä widgetisi tarjoaa.
  • Kun olet tyytyväinen widgetin ulkoasuun ja sisältöön, valitse Ota tilannekuva.

  • Voit noutaa tilannekuvasi vaihtamalla takaisin Android Studioon ja valitsemalla työkaluriviltä Näytä> Työkalu Windows> Laitetiedostojen hallinta. Tämä käynnistää Android Studion Device File Explorer -sovelluksen.
  • Siirry Laitetiedostojen Resurssienhallinnassa sdcard / Download -kohtaan. Sinun pitäisi löytää esikatselukuvasi tallennettuna seuraavaan muotoon: _ori_.png

  • Vedä tämä kuva Android Studiosta ja pudota se helposti helposti saavutettavissa olevaan alueeseen, kuten työpöydälle.
  • Anna tälle kuvatiedostolle kuvaava nimi.
  • Vedä ja pudota tiedosto projektin piirustuskansioon.
  • Avaa AppWidgetProviderInfo, joka tälle projektille on kokoelma_widget_info.xml.
  • Etsi android: previewImage = ”@ mipmap / ic_launcher” -rivi ja päivitä se viittaamaan esikatselukuvaasi.

Widgetisi käyttää nyt tätä uutta kuvaresurssia esikatselukuvanaan:

  • Asenna päivitetty projekti fyysiselle Android-laitteellesi tai AVD: hen.
  • Paina pitkään mitä tahansa tyhjää kohtaa aloitusnäytössä.
  • Napauta Widgetit, joka käynnistää Widget Picker.
  • Selaa widgettiisi; sen pitäisi nyt käyttää päivitettyä esikatselukuvaa.

Muokattavat widgetit: Kokoonpanotoiminnon lisääminen

Kokoonpanotoiminto käynnistyy automaattisesti, kun käyttäjä asettaa jokaisen widget-esiintymän aloitusnäyttöön.

On monia syitä, miksi sinun kannattaa lisätä kokoonpanotoiminto projektiisi.

widgetit tarjoavat yleensä parhaan käyttökokemuksen, kun ne tarjoavat pääsyn yksittäisen käyttäjän kannalta tärkeimpiin tietoihin tai ominaisuuksiin.

Ensinnäkin, jotkut widgetit vaativat alkuperäisen asennuksen, esimerkiksi liikennehälytyksiä näyttävä widget tarvitsee tietää käyttäjän kotiosoitteen, missä he työskentelevät, ja ajoista, jolloin ne yleensä matkustavat. Widget voi olla täysin hyödytön ilman mitään tapaa syöttää näitä tietoja!

Lisäksi widgetit tarjoavat parhaan käyttökokemuksen, kun ne tarjoavat pääsyn yksittäisen käyttäjän kannalta tärkeimpiin tietoihin tai ominaisuuksiin. Lisäämällä konfigurointitoiminto projektiisi, voit antaa käyttäjille vapauden valita ja valita tarkalleen mitä widgetisi sisältyy.

Jopa suhteellisen suoraviivaisilla mukautuksilla, kuten widgetin taustan tai fontin muuttamisella, voi olla positiivinen vaikutus käyttäjäkokemukseen - loppujen lopuksi kukaan ei tule arvostamaan widgettiä, joka on visuaalisesti ristiriidassa muun kotinäytönsä kanssa!

Kukaan ei arvosta widgettiä, joka visuaalisesti on ristiriidassa muun kotinäytönsä kanssa!

Vaihtoehtoisesti joskus sinulla voi olla pitkä luettelo sisällöstä, jonka haluat sisällyttää widgetisi, ja yrität kaventaa vaihtoehtojasi. Konfigurointitoiminto voi olla tapa hyödyntää kaikkia ideoitasi hyvässä käytössä, ilman luominen sotkuinen, hämmentävä widget. Muista vain, että widgetin luominen ei saisi tuntea olevan niin suositeltavaa, joten jos annat konfigurointitoiminnon, suositellaan, että rajoitutte kolmeen määritysvaihtoehtoon.

Lisäämme kokoonpanotoiminto projektiimme!

Ensinnäkin, kokoonpanotoimintamme tarvitsee asettelun, joten luo uusi asetteluresurssitiedosto nimeltä config_activity.xml.

Aion lisätä seuraavat painikkeet tähän asetteluun:

  • Määrityspainike. Tosielämän projektissa tämä painike muuttaa widgetiä jollakin tavalla, esimerkiksi lisäämällä tai poistamalla sisältöä tai muuttamalla, kuinka usein widget päivittyy. Koodin pitämiseksi suoranaisena, napsauttamalla tätä painiketta, näyttöön tulee vain Konfigurointivaihtoehtojen paahtoleipä.
  • Asetuspainike. Kun käyttäjä on tyytyväinen heidän widgetiensä konfigurointiin, tämän painikkeen painaminen asettaa juuri määritetyt widgetit aloitusnäyttöön.

Tässä on valmistunut config_activity.xml-tiedostoni:

Luo kokoonpanotoiminto

Nyt meidän on luotava kokoonpanotoimintamme.

Aloita luomalla uusi Java-luokka nimeltä ConfigActivity. Tässä toiminnassa haemme sovelluswidget-tunnuksen aikomuksesta, joka käynnisti määritystoiminnan. Jos tällä tarkoituksella ei ole widget-tunnusta, meidän on soitettava loppuun () -menetelmään:

Aikomus aikomus = getIntent (); Bundle extras = intent.getExtras (); if (extrat! = nolla) {appWidgetId = extras.getInt (AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {finish (); }

Seuraavaksi meidän on luotava palautusaike, lähetettävä alkuperäinen appWidgetId ja asetettava tulokset määritystoiminnasta:

Intent resultValue = uusi tarkoitus (); resultValue.putExtra (AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult (RESULT_OK, resultValue); suorittaa loppuun(); }}}

Jos annat määritystoiminnan, ACTION_APPWIDGET_UPDATE-lähetystä ei lähetetä automaattisesti, kun määritystoiminto käynnistetään, mikä tarkoittaa onUpdate () -menetelmää tapa kutsutaan, kun käyttäjä luo widgetisi esiintymän.

Konfigurointitoiminto varmistaa, että widgetisi on luotu ajan tasalla olevilla tiedoilla ja sisällöllä on pakko laukaisee ensimmäisen onUpdate () -pyynnön.

Tässä on valmis ConfigActivity:

tuo android.app.Activity; tuo android.appwidget.AppWidgetManager; tuo android.os.Bundle; tuo android.widget.Button; tuo android.content.Intent; Tuo android.view.View; Tuo android.view.View.OnClickListener; tuo android.widget.Toast; julkisen luokan ConfigActivity laajentaa toimintaa {@Orride suojattu tyhjä onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.config_activity); setResult (RESULT_CANCELED); Painike setupWidget = (painike) findViewById (R.id.setupWidget); setupWidget.setOnClickListener (uusi OnClickListener () {@Orride public void onClick (View v) {handleSetupWidget ();}}); Button configButton = (painike) findViewById (R.id.configButton); configButton.setOnClickListener (uusi OnClickListener () {@Orride public void onClick (View v) {handleConfigWidget ();}}); } yksityinen tyhjä kahvaSetupWidget () {showAppWidget (); } yksityinen tyhjä käsitelläConfigWidget () {Toast.makeText (ConfigActivity.this, "Configuration options", Toast.LENGTH_LONG) .show (); } int appWidgetId; yksityinen tyhjä showAppWidget () {appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; Aikomus aikomus = getIntent (); Bundle extras = intent.getExtras (); if (extrat! = nolla) {appWidgetId = extras.getInt (AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {finish (); } // TEHTÄVÄ: Suorita kokoonpano // Intent resultValue = new Intent (); resultValue.putExtra (AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult (RESULT_OK, resultValue); suorittaa loppuun(); }}}

Kun olet luonut kokoonpanotoiminnon, sinun on julistettava tämä toiminta manifestissa ja määritettävä, että se hyväksyy APPWIDGET_CONFIGURE-toiminnon:

Viimeinkin, koska määritystoimintaan viitataan paketin soveltamisalan ulkopuolella, meidän on julistettava tämä aktiviteetti AppWidgetProviderInfo-tiedostossamme, joka tässä tapauksessa on kokoelma_widget_info.xml-tiedosto:

android: configure = "com.jessicathornsby.collectionwidget.ConfigActivity">

Projektin testaaminen

Nyt on aika asettaa valmiin projektisi testiin:

  • Asenna päivitetty projektisi fyysiselle Android-laitteelle tai AVD: lle.
  • Poista kaikki aiemmat widget-esiintymät varmistaaksesi, että työskentelet uusimman version kanssa.
  • Paina pitkään mitä tahansa tyhjää kohtaa aloitusnäytössä ja valitse Widgetit, kun sitä pyydetään.
  • Etsi widget widget Picker -sovelluksessa ja paina sitä pitkään valitaksesi.
  • Pudota widget aloitusnäyttöön. Kokoonpanotoiminnon tulisi käynnistyä automaattisesti.
  • Napsauta Suorita konfigurointi -painiketta napsautuksella, ja Configuration Options -lehden tulisi ilmestyä, mikä vahvistaa tämän vuorovaikutuksen rekisteröinnin onnistuneesti.
  • Kuvittele, että olet mukauttanut widgetin asetukset ja olet nyt valmis sijoittamaan sen etusivullesi; anna Napauta Luo widget -painike, ja tämä widget on luotava onnistuneesti.

Voit ladata valmistuneen kokoelma-widget-projektin GitHubista.

Käärimistä

Tässä artikkelissa loimme vieritettävän kokoelma-widgetin, joka näyttää tietojoukon käyttäjän aloitusnäytössä.

Jos haluat jatkaa työskentelyä tämän projektin kanssa, voit yrittää lisätä oman koodisi onUpdate () -menetelmään luodaksesi widgetin, joka päivittyy uusilla tiedoilla AppWidgetProviderInfo-tiedostossa (kokoelma_widget_info) määritetyn ajanjakson välein.

Jos luot Android-widgetin, jaa sitten luomuksesi alla oleviin kommentteihin!

Huippuluokan LG-televiioia on ThinQ-tuotemerkki, joka merkitee iäänrakennettuja AI-ominaiuukia. Vaikka aiempiin LG-televiioihin on iällytetty iäänrakennettu Google Aitentti ja...

LG V20: n jälkeen LG: n V-arjan älypuhelimet ovat kärineet valitettavata identiteettikriiitä. e, joka alkoi karuki, lihavaki, erikoituneeki älypuhelimiki, kehittyi hitaati LG:...

Meidän Valintamme