Vytvorte pre svoju aplikáciu miniaplikáciu Android

Autor: Lewis Jackson
Dátum Stvorenia: 13 Smieť 2021
Dátum Aktualizácie: 1 V Júli 2024
Anonim
Vytvorte pre svoju aplikáciu miniaplikáciu Android - Aplikácie
Vytvorte pre svoju aplikáciu miniaplikáciu Android - Aplikácie

Obsah


Od prvých dní operačného systému umožňujú widgety pre Android používateľom interakciu so svojimi obľúbenými aplikáciami z pohodlia svojej domovskej obrazovky. Ako teda vytvoríte widget pre Android?

Pre vývojárov poskytujú widgety vašej aplikácii cennú prítomnosť na ploche používateľa. Namiesto toho, aby vás niekto v zásuvke aplikácie zastrelil, bude vám o vašej aplikácii pripomenuté každý jeden raz pozerajú sa na úvodnú obrazovku - zároveň získajú ukážku najzaujímavejšieho a najužitočnejšieho obsahu vašej aplikácie.

Widgety dodávajú vašej aplikácii cennú prítomnosť na ploche používateľa

V tomto článku vám ukážem, ako poskytnúť lepší dojem používateľa a zároveň povzbudiť používateľov, aby sa zapojili do vašej aplikácie, vytvorením widgetu pre Android! Na konci tohto článku budete mať vytvorenú miniaplikáciu posúvateľnej kolekcie, ktorá zobrazuje kompletnú množinu údajov na ploche používateľa.


Aby sme zaistili, že poskytujete taký widget, ktorý používatelia používajú chcieť umiestniť na svoju domovskú obrazovku, vytvoríme tiež konfiguračnú aktivitu, ktorá umožní používateľom prispôsobiť obsah, vzhľad a funkcie miniaplikácie. Nakoniec ukážem, ako môžete ľudí povzbudiť, aby používali váš widget, vytvorením obrázka náhľadu Widget, ktorý zobrazuje to najlepšie, čo môže váš widget ponúknuť.

Prečítajte si tiež: Vývoj pre skladacie zariadenia: Čo potrebujete vedieť

Čo sú widgety pre Android?

Miniaplikácia aplikácie je ľahká miniatúrna aplikácia, ktorá žije na ploche používateľa.

Widgety pre Android môžu poskytovať celý rad obsahu, ale spravidla patria do jednej z nasledujúcich kategórií:


  • Informačný widget, Jedná sa o miniaplikovateľnú miniaplikáciu, ktorá zobrazuje niektoré informácie, napríklad dnešnú predpoveď počasia alebo dátum a čas.
  • Zbierka widgety, Toto je posúvateľná miniaplikácia, ktorá zobrazuje množinu súvisiacich údajov vo formáte ListView, GridView, StackView alebo AdapterViewFlipper. Widgety kolekcie sú obvykle podporované zdrojom údajov, ako je napríklad databáza alebo pole.
  • Ovládajte widgety, Tieto widgety fungujú ako diaľkové ovládanie, ktoré používateľom umožňuje interakciu s vašou aplikáciou, bez musí to priniesť do popredia. Aplikácie, ktoré prehrávajú médiá, napríklad podcasty alebo hudbu, majú často ovládacie widgety, ktoré umožňujú používateľovi spúšťať akcie Play, Pause a Skip priamo z úvodnej obrazovky.
  • Hybridné widgety, Niekedy je možné dosiahnuť lepšiu používateľskú skúsenosť kombináciou prvkov z viacerých kategórií. Napríklad, ak vyvíjate ovládací ovládací prvok pre hudobnú aplikáciu, môžete poskytnúť ovládacie prvky Play, Pause a Skip, môžete sa však rozhodnúť zobraziť aj niektoré informácie, napríklad názov skladby a interpreta. Ak sa rozhodnete kombinovať a zápasovať, nenechajte sa uniesť! Widgety majú tendenciu poskytovať najlepšiu používateľskú skúsenosť, keď poskytujú ľahký prístup k malému množstvu aktuálnych, relevantných informácií alebo k niekoľkým bežne používaným funkciám. Odporúčame, aby ste identifikovali primárnu kategóriu miniaplikácie, rozvinuli ju podľa tejto kategórie, potom pridajte niekoľko prvkov zo sekundárnej kategórie miniaplikácie.

Potrebuje môj projekt naozaj miniaplikáciu aplikácie?

Existuje niekoľko dôvodov, prečo by ste mali zvážiť pridanie miniaplikácie aplikácie do svojho projektu pre Android.

Widgety pre Android môžu vylepšiť používateľské prostredie

Spravidla platí, že čím menej navigačných krokov je potrebných na dokončenie úlohy, tým lepšie je užívateľské prostredie.

Poskytnutím miniaplikácie aplikácie môžete z najbežnejšie používaných tokov aplikácie odstrániť viacero navigačných krokov. V najlepšom prípade budú vaši používatelia schopní získať potrebné informácie jednoduchým pohľadom na ich úvodnú obrazovku alebo vykonať požadovanú úlohu jednoducho klepnutím na tlačidlo v ovládacom prvku widget.

Výkonnejšie ako klávesové skratky aplikácií

Miniaplikácie aplikácií často reagujú na udalosti onClick spustením najvyššej úrovne v pridruženej aplikácii, podobne ako v skratke aplikácie. Miniaplikácie však môžu tiež poskytovať priamy prístup k špecifickým aktivitám v rámci aplikácie, napríklad poklepaním na upozornenie Nové prijaté miniaplikácie môže spustiť pridruženú aplikáciu s novou už otvorenou.

Vložením viacerých odkazov do rozloženia miniaplikácie získate prístup jedným kliknutím na všetky najdôležitejšie aktivity vašej aplikácie, čím z vašich najčastejšie používaných tokov odstránite ešte viac navigačných krokov.

Vložením viacerých odkazov do rozloženia miniaplikácie získate prístup jedným kliknutím na všetky najdôležitejšie aktivity vašej aplikácie.

Upozorňujeme, že miniaplikácie reagujú iba na udalosti OnClick, čo používateľom bráni v náhodnej interakcii s vašim miniaplikáciou počas posúvania po ploche. Jedinou výnimkou je, keď sa používateľ pokúša miniaplikáciu odstrániť tak, že ju potiahnete smerom k akcii Odstrániť na domovskej obrazovke, pretože v tomto scenári bude vaša miniaplikácia reagovať na gesto zvislého švihnutia.

Táto interakcia je spravovaná systémom Android, takže sa nemusíte starať o manuálne implementovanie podpory vertikálneho posúvania v miniaplikácii.

Vytvorte miniaplikáciu pre Android, aby ste dosiahli dlhodobé zapojenie

Presvedčiť ľudí, aby si stiahli vašu aplikáciu, je iba prvým krokom k vytvoreniu úspešnej aplikácie pre Android. Šanca je, že ak si vezmete svoj vlastný smartfón alebo tablet s Androidom a prejdete prstom po zásuvke aplikácie, objavíte niekoľko aplikácií, ktoré ste nepoužili v dňoch, týždňoch alebo potenciálne dokonca mesiacoch!

Prečítajte si tiež:Začíname s aplikáciou Facebook pre Android SDK

Po úspešnej inštalácii aplikácie do zariadenia používateľa budete musieť tvrdo pracovať, aby ste ich udržali v interakcii a užívali si aplikáciu. Poskytnutie vašej prítomnosti na ploche môže byť výkonným nástrojom, ktorý pomôže dosiahnuť dlhodobé zapojenie, jednoducho preto, že je to neustále pripomienka existencie vašej aplikácie!

Dobre navrhnutý widget môže slúžiť aj ako priebežná reklama na vašu aplikáciu. Vždy, keď sa používateľ pozrie na svoju úvodnú obrazovku, váš widget má príležitosť aktívne ho povzbudiť, aby sa znova zapojili do vašej aplikácie tým, že mu predstaví všetok najzaujímavejší a najužitočnejší obsah vašej aplikácie.

Vytvorenie miniaplikácie aplikácie kolekcie

V tomto návode vytvoríme kolekciu widgetov, ktorá zobrazí pole ako posúvateľné zobrazenie ListView.

Aby ste pomohli sledovať životný cyklus miniaplikácie aplikácie, táto miniaplikácia bude tiež spúšťať rôzne toasty, keď sa pohybuje v rôznych stavoch životného cyklu. Na konci tohto tutoriálu vylepšíme našu miniaplikáciu vlastným obrázkom ukážky, ktorý sa zobrazí v nástroji na výber miniaplikácií Android, a konfiguračnou aktivitou, ktorá používateľom umožní prispôsobiť si miniaplikáciu skôr, ako ju umiestnia na svoju plochu.

Vytvorte nový projekt Android s nastaveniami podľa vášho výberu a začnime!

Vytvorenie rozloženia miniaplikácie

Na začiatok definujme používateľské rozhranie (UI) widgetu.

Aplikačné widgety sa zobrazujú v procese zvonka svoju aplikáciu, takže môžete používať iba rozloženia a zobrazenia, ktoré sú podporované RemoteViews.

Pri zostavovaní rozloženia máte obmedzené nasledujúce možnosti:

  • AnalogClock
  • gombík
  • chronometer
  • FrameLayout
  • GridLayout
  • ImageButton
  • ImageView
  • LinearLayout
  • Ukazateľ postupu
  • RelativeLayout
  • TextView
  • ViewStub
  • AdapterViewFlipper
  • GridView
  • ListView
  • StackView
  • ViewFlipper

Upozorňujeme, že podtriedy vyššie uvedených tried a zobrazení sú nie podporované.

Vytvorte nový súbor prostriedku rozloženia s názvom list_widget.xml. Keďže zobrazíme naše údaje pomocou ListView, toto rozloženie slúži hlavne ako kontajner pre prvok:

Vyplnenie miniaplikácie kolekcie

Ďalej musíme pre poskytovateľa ListView vytvoriť poskytovateľa údajov. Vytvorte novú triedu Java s názvom DataProvider.java a pridajte nasledujúce:

import android.content.Context; import android.content.Intent; importovať android.widget.RemoteViews; importovať android.widget.RemoteViewsService; importovať java.util.ArrayList; import java.util.List; import statického android.R.id.text1; import statického android.R.layout.simple_list_item_1; verejná trieda DataProvider implementuje RemoteViewsService.RemoteViewsFactory {List myListView = nový ArrayList <> (); Kontext mContext = null; public DataProvider (Kontextový kontext, Zámerový zámer) {mContext = context; } @Override public void onCreate () {initData (); } @Override public void onDataSetChanged () {initData (); } @Override public void onDestroy () {} @Override public int getCount () {return myListView.size (); } @Override verejné RemoteViews getViewAt (int position) {RemoteViews view = new RemoteViews (mContext.getPackageName (), simple_list_item_1); view.setTextViewText (text1, myListView.get (position)); spätný pohľad; } @Override public RemoteViews getLoadingView () {return null; } @Override public int getViewTypeCount () {return 1; } @Override public long getItemId (int position) {return position; } @Override public boolean hasStableIds () {return true; } private void initData () {myListView.clear (); pre (int i = 1; i <= 15; i ++) {myListView.add ("položka ListView" + i); }}}

AppWidgetProvider: Konfigurácia miniaplikácie

Ak chcete vytvoriť miniaplikáciu Android, musíte vytvoriť niekoľko súborov.

Náš prvý súbor špecifický pre widget je AppWidgetProvider, čo je BroadcastReceiver, kde môžete definovať rôzne metódy životného cyklu widgetu, ako napríklad metódu, ktorá sa volá pri prvom vytvorení miniaplikácie a metódu, ktorá sa nazýva, keď je táto miniaplikácia nakoniec odstránená.

Vytvorte novú triedu Java (File> New> Java Class) s názvom CollectionWidget.

Na začiatok musia všetky súbory poskytovateľa widgetov presahovať z triedy AppWidgetProvider. Potom musíme načítať súbor prostriedku rozloženia list_widget.xml do objektu RemoteViews a informovať AppWidgetManager o aktualizovanom objekte RemoteViews:

public class CollectionWidget rozširuje AppWidgetProvider {static void updateAppWidget (Kontextový kontext, AppWidgetManager appWidgetManager, int appWidgetId) {// Okamžitý objekt RemoteViews // RemoteViews views = new RemoteViews (context.getPackageName (), R.layout.list_widget); setRemoteAdapter (kontext, pohľady); // Požiadajte, aby AppWidgetManager aktualizoval miniaplikáciu aplikácie // appWidgetManager.updateAppWidget (appWidgetId, views); }

Vytvorte adaptér

Keďže zobrazujeme naše údaje v zozname ListView, musíme v našej aplikácii AppWidgetProvider definovať metódu setRemoteAdapter (). SetRemoteAdapter () je ekvivalentný volaniu AbsListView.setRemoteViewsAdapter (), ale je navrhnutý na použitie v miniaplikáciách aplikácií.

V tejto metóde musíme definovať ID AdapterView (R.id.widget_list) a zámer služby, ktorá nakoniec poskytne údaje nášmu RemoteViewsAdapter - čoskoro vytvoríme túto triedu WidgetService.

private static void setRemoteAdapter (Kontextový kontext, @ NonNull konečné zobrazenia RemoteViews) {views.setRemoteAdapter (R.id.widget_list, nový zámer (context, WidgetService.class)); }}

Definovanie metód životného cyklu miniaplikácie

V našej aplikácii AppWidgetProvider musíme tiež definovať nasledujúce metódy životného cyklu miniaplikácie:

Načítanie nového obsahu pomocou funkcie OnUpdate

Metóda životného cyklu miniaplikácie onUpdate () je zodpovedná za aktualizáciu Pohľadov miniaplikácie novými informáciami.

Táto metóda sa nazýva zakaždým:

  • Používateľ vykoná akciu, ktorá manuálne spustí metódu onUpdate ().
  • Uplynul interval aktualizácie určený pre aplikáciu.
  • Používateľ umiestni novú inštanciu tohto widgetu na svoju úvodnú obrazovku.
  • Aplikačnému programu ACTION_APPWIDGET_RESTORED sa odošle AppWidgetProvider. Tento zámer vysielania sa spustí, ak sa widget obnoví zo zálohy.

Tu zaregistrujete aj obsluhy udalostí, ktoré by mal váš widget používať.

Pri aktualizácii miniaplikácie Android je dôležité pamätať na to, že používatelia môžu vytvárať viac rovnakých miniaplikácií. Napríklad váš widget je možné prispôsobiť a používateľ sa rozhodne vytvoriť niekoľko „verzií“, ktoré zobrazujú rôzne informácie alebo poskytujú prístup k jedinečným funkciám.

Keď voláte onUpdate (), musíte určiť, či aktualizujete každú inštanciu tohto widgetu alebo iba konkrétnu inštanciu. Ak chcete aktualizovať každú inštanciu, môžete použiť aplikáciu appWidgetIds, čo je pole identifikátorov, ktoré identifikujú každú inštanciu v celom zariadení.

V nasledujúcom útržku aktualizujem každú inštanciu:

@Override public void onUpdate (Kontextový kontext, AppWidgetManager appWidgetManager, int appWidgetIds) {for (int appWidgetId: appWidgetIds) {// Aktualizácia všetkých inštancií tohto widgetu // updateAppWidget (kontext, appWidgetManager, appWidgetId); } super.onUpdate (kontext, appWidgetManager, appWidgetIds); }

Upozorňujeme, že táto metóda onUpdate () v súčasnosti v miniaplikácii v súčasnosti nevedie žiadne zmeny, aby bol kód jednoznačný.

onEnabled: Vykonáva počiatočné nastavenie

Metóda životného cyklu onEnabled () sa volá ako reakcia na ACTION_APPWIDGET_ENABLED, ktorá sa odošle, keď sa inštancia vášho widgetu pridá na úvodnú obrazovku pre doménu najprv Čas. Ak používateľ vytvorí dve inštancie vášho miniaplikácie, potom sa pre prvú inštanciu zavolá onEnabled (), ale nie na druhý.

Metóda životného cyklu onEnabled () je miestom, kde by ste mali vykonať akékoľvek nastavenie, ktoré je potrebné pre všetky inštancie widgetu, ako je napríklad vytvorenie databázy, ktorá bude obsahovať informácie o miniaplikáciách.

Budem zobrazovať prípitok, aby ste presne videli, kedy sa volá táto metóda životného cyklu:

@Override public void onEnabled (Kontextový kontext) {Toast.makeText (kontext, "onEnabled nazvaný", Toast.LENGTH_LONG) .show (); }

Upozorňujeme, že ak používateľ odstráni všetky inštancie vášho miniaplikácie a potom vytvorí novú inštanciu, klasifikuje sa to ako prvá inštancia a znova sa zavolá metóda životného cyklu onEnabled ().

Čistenie s funkciou onDisabled

Metóda onDisabled () sa volá ako reakcia na ACTION_APPWIDGET_DISABLED, ktorá sa spustí, keď užívateľ odstráni posledná inštancia vášho widgetu.

Táto metóda životného cyklu miniaplikácií by mala vyčistiť všetky prostriedky, ktoré ste vytvorili v metóde onEnabled (), napríklad odstránenie databázy, ktorú ste vytvorili v onEnabled ().

Aby sme zaistili jednoduchosť nášho kódu, pri každom spustení tejto metódy zobrazím jednoducho prípitok:

@Override public void onDisabled (Kontextový kontext) {Toast.makeText (kontext, "onDisabled nazvaný", Toast.LENGTH_LONG) .show (); }

Dokončený AppWidgetProvider

Váš súbor CollectionWidget by teraz mal vyzerať asi takto:

importovať android.appwidget.AppWidgetManager; importovať android.appwidget.AppWidgetProvider; import android.content.Context; import androidx.annotation.NonNull; import android.content.Intent; importovať android.widget.RemoteViews; importovať android.widget.Toast; // Rozšíriť z triedy AppWidgetProvider // verejná trieda CollectionWidget rozširuje AppWidgetProvider {statický void updateAppWidget (kontextový kontext, AppWidgetManager appWidgetManager, int appWidgetId) {// Načítanie súboru prostriedku rozloženia do objektu RemoteViews // RemoteViews views = new RemoteViews (context. getPackageName (), R.layout.list_widget); setRemoteAdapter (kontext, pohľady); // Informovať AppWidgetManager o objekte RemoteViews // appWidgetManager.updateAppWidget (appWidgetId, views); } @Override public void onUpdate (Kontextový kontext, AppWidgetManager appWidgetManager, int appWidgetIds) {for (int appWidgetId: appWidgetIds) {updateAppWidget (kontext, appWidgetManager, appWidgetId); } super.onUpdate (kontext, appWidgetManager, appWidgetIds); } @Override public void onEnabled (Kontextový kontext) {Toast.makeText (kontext, "onEnabled nazvaný", Toast.LENGTH_LONG) .show (); } @Override public void onDisabled (Kontextový kontext) {Toast.makeText (kontext, "onDisabled nazvaný", Toast.LENGTH_LONG) .show (); } private static void setRemoteAdapter (Kontextový kontext, @ NonNull konečné zobrazenia RemoteViews) {views.setRemoteAdapter (R.id.widget_list, nový zámer (context, WidgetService.class)); }}

Súbor AppWidgetProviderInfo

Miniaplikácia vašej aplikácie vyžaduje aj súbor AppWidgetProviderInfo, ktorý definuje niekoľko dôležitých vlastností vrátane minimálnych dimenzií miniaplikácie a ako často by sa mala aktualizovať.

Súbor AppWidgetProviderInfo je uložený v priečinku res / xml vášho projektu.

Ak váš projekt tento priečinok už neobsahuje, musíte ho vytvoriť:

  • Control-kliknite na priečinok res projektu.
  • Vyberte Nový> Adresár zdrojov Android.
  • V nasledujúcom okne otvorte rozbaľovaciu ponuku Typ prostriedku a vyberte xml.
  • Názov adresára by sa mal automaticky aktualizovať na xml, ale ak to tak nie je, budete ho musieť zmeniť ručne.
  • Kliknite na tlačidlo OK.

Potom vytvorte súbor collection_widget_info, ktorý budeme používať ako náš AppWidgetProviderInfo:

  • Control-kliknite na priečinok xml vášho projektu.
  • Vyberte Nový> Súbor zdrojov XML.
  • Pomenujte tento súbor collection_widget_info.
  • Kliknite na tlačidlo OK.

V našom súbore AppWidgetProviderInfo musíme definovať nasledujúce vlastnosti:

1. Android: previewImage

Toto je kreslenie, ktoré predstavuje miniaplikáciu vašej aplikácie v zariadení na výber miniaplikácií zariadenia.

Ak neposkytnete ukážku obrázka, systém Android namiesto toho použije ikonu vašej aplikácie. Ak chcete používateľov povzbudiť, aby si z miniaplikácie Widget vybrali váš widget, mali by ste poskytnúť kresliteľnú ukážku, ktorá bude ukazovať, ako bude váš widget vyzerať, keď bude správne nakonfigurovaný na jeho domovskej obrazovke.

Najjednoduchší spôsob vytvorenia ukážky obrázka je použitie aplikácie Widget Preview, ktorá je súčasťou emulátora systému Android. Táto aplikácia vám umožňuje nakonfigurovať miniaplikáciu a potom vygenerovať obrázok, ktorý potom môžete použiť v projekte Android.

Po dokončení budovania nášho widgetu tento obrázok vytvoríme, takže ako dočasný obrázok ukážky používam automaticky generovaný prostriedok mipmap / ic_launcher.

2. android: widgetCategory

Miniaplikácie aplikácií musia byť umiestnené vo vnútri hostiteľa miniaplikácií aplikácií, ktorý je zvyčajne bežnou úvodnou obrazovkou Android, ale môže to byť aj spúšťač tretej strany, napríklad Evie Launcher alebo Nova Launcher.

Medzi úrovňami API 17 a 20 bolo možné umiestniť widgety aplikácií na úvodnú obrazovku alebo uzamknutá obrazovka, ale podpora uzamknutej obrazovky bola v API úrovni 21 zastaraná.

Pomocou atribútu android: widgetCategory môžete určiť, či sa dá miniaplikácia aplikácie umiestniť na plochu, na uzamknutú obrazovku (na ktorú sa systém Android odvoláva ako na „kľúčovú ochranu“) alebo na obe. Keďže miniaplikácie nie je možné umiestniť na zámkovú obrazovku v najnovších verziách systému Android, zacieľujeme iba na plochu.

V záujme zachovania súkromia používateľa by sa pri umiestnení na uzamknutú obrazovku nemala vaša miniaplikácia zobrazovať žiadne citlivé ani súkromné ​​informácie.

Ak dávate používateľom možnosť umiestniť miniaplikáciu na uzamknutú obrazovku, každý, kto sa pozrie na zariadenie používateľa, by mohol vidieť vašu miniaplikáciu a všetok jej obsah. V záujme ochrany súkromia používateľa by pri miniaplikácii na uzamknutú obrazovku nemal widget obsahovať žiadne citlivé ani súkromné ​​informácie. Ak váš widget obsahuje osobné údaje, môžete zvážiť poskytnutie samostatného rozloženia úvodnej obrazovky a obrazovky uzamknutia.

3. Android: initialLayout

Toto je súbor zdrojov rozloženia, ktorý by mala vaša miniaplikácia použiť, keď je umiestnená na úvodnej obrazovke, ktorá je pre náš projekt list_widget.xml.

4. Android: resizeMode = ”horizontal | vertical”

Atribút Android: resizeMode umožňuje určiť, či sa dá widgetu zmeniť veľkosť horizontálne, vertikálne alebo pozdĺž oboch osí.

Ak chcete zaistiť, aby sa miniaplikácia správne zobrazovala a fungovala na rôznych obrazovkách, odporúčame vám povoliť horizontálnu zmenu veľkosti miniaplikácie a vertikálne, pokiaľ nemáte konkrétny dôvod.

5. Android: minHeight a Android: minWidth

Ak je možné zmeniť veľkosť widgetu, musíte zaistiť, aby si používateľ widget nezúžil na miesto, kde sa stane nepoužiteľným. Atribúty minHeight a minWidth môžete použiť na definovanie najmenšej, ktorú sa vaša aplikácia pri zmene veľkosti používateľa zmrští.

Tieto hodnoty tiež predstavujú počiatočnú veľkosť miniaplikácie, takže ak nie je možné zmeniť veľkosť miniaplikácie, potom minHeight a minWidth definujú trvalé rozmery miniaplikácie.

6. android: updatePeriodMillis

AppWidgetProviderInfo je tiež miesto, kde určíte, ako často by mal váš widget vyžadovať nové informácie.

Najmenší podporovaný interval aktualizácie je raz za 1800 000 milisekúnd (30 minút). Aj keď deklarujete kratší interval aktualizácie, váš widget sa bude aktualizovať iba raz za pol hodiny.

Aj keď budete chcieť čo najrýchlejšie zobraziť najnovšie informácie, systém vôľa zobudiť spiace zariadenie s cieľom získať nové informácie. Časté aktualizácie sa môžu spáliť z batérie zariadenia, najmä počas období, keď je zariadenie ponechané v pokoji po značnú dobu, napríklad cez noc. Poskytnutie čo najlepšej používateľskej skúsenosti znamená nájsť rovnováhu medzi obmedzením spotreby batérie a poskytnutím nových informácií v primeranom časovom rámci.

Mali by ste vziať do úvahy aj druh obsahu, ktorý sa bude váš widget zobrazovať.

Mali by ste tiež zohľadniť druh obsahu, ktorý sa budú zobrazovať vaše miniaplikácie pre Android. Napríklad môže byť potrebné, aby miniaplikácia Počasie obnovovala aktualizovanú predpoveď iba raz denne, zatiaľ čo aplikácia, ktorá zobrazuje najnovšie správy, sa bude musieť aktualizovať častejšie.

Ak chcete nájsť toto dokonalé vyváženie, možno bude potrebné vyskúšať miniaplikáciu na celom rade frekvencií aktualizácií a zmerať vplyv na výdrž batérie a aktuálnosť jej obsahu. Ak máte ochotnú skupinu testerov, môžete dokonca nastaviť testovanie A / B, aby ste zistili, či sú niektoré frekvencie aktualizácií prijímané pozitívnejšie ako iné.

Aalso čítal: AndroidManifest.xml všetko, čo potrebujete vedieť

Akonáhle určíte dokonalý interval aktualizácie, možno budete chcieť pri vývoji a testovaní aplikácie použiť kratší interval. Napríklad, keď testujete, že metóda onUpdate () vašej aplikácie sa spúšťa správne, môžete použiť najkratšiu možnú frekvenciu aktualizácií (android: updatePeriodMillis = ”1800000 ″) a potom túto hodnotu pred zverejnením aplikácie pre širokú verejnosť zmeňte.

Vyplnený AppWidgetProviderInfo

Hotový súbor collection_widget_info.xml by mal vyzerať asi takto:

Neovládajte úvodnú obrazovku používateľa!

Aby sme sa ubezpečili, že úvodná obrazovka nikdy nebude preplnená, pridáme k nášmu widgetu nejaké vypchávky a okraje. Ak váš projekt už neobsahuje súbor dimens.xml, musíte si ho vytvoriť:

  • Control-kliknite na priečinok s hodnotami projektu.
  • Vyberte Nový> Súbor zdrojov hodnôt.
  • Tento názov pomenujte.
  • Kliknite na tlačidlo OK.

Otvorte súbor dimens.xml a definujte nasledujúce hodnoty okrajov a výplní:

10dp 8dp

Posiela sa údaje do miniaplikácie

Ďalej musíme vytvoriť službu miniaplikácií, ktorá bude zodpovedná za odosielanie našich údajov o kolekcii do miniaplikácie.

Vytvorte novú triedu Java (New> Java Class) s názvom WidgetService a pridajte nasledujúce:

import android.content.Intent; importovať android.widget.RemoteViewsService; public class WidgetService rozširuje RemoteViewsService {@Override public RemoteViewsFactory onGetViewFactory (úmysel) {návrat nového DataProvidera (toto, zámer); }}

Registrácia miniaplikácie v časti Manifest

Teraz musíme urobiť niekoľko zmien v manifeste nášho projektu.

Ak chcete začať, otvorte manifest a zaregistrujte svoj widget ako vysielač vysielania. Musíme tiež pridať filter zámerov pre akciu android.appwidget.action.APPWIDGET_UPDATE:

Ďalej musíte určiť poskytovateľa miniaplikácie aplikácií:

Nakoniec musíme deklarovať službu, ktorá bude odosielať údaje nášmu widgetu, ktorým je v tomto prípade trieda WidgetService. Táto služba vyžaduje povolenie Android.permission.BIND_REMOTEVIEWS:

Vyskúšajte svoj widget

Ak ste postupovali spolu s týmto tutoriálom, teraz máte k dispozícii kompletnú miniaplikáciu kolekcie, ktorá zobrazuje množinu údajov na ploche používateľa.

Ak by išlo o projekt Android v reálnom živote, zvyčajne by ste rozšírili metódy životného cyklu, najmä metódu onUpdate (), ale toto je všetko, čo musíme vytvoriť widget, ktorý môžete nainštalovať a otestovať na svojom zariadení s Androidom:

  • Nainštalujte tento projekt na kompatibilný Android smartphone, tablet alebo AVD (Android Virtual Device).
  • Dlho stlačte ľubovoľnú prázdnu časť úvodnej obrazovky a po zobrazení výzvy vyberte miniaplikácie; Týmto sa spustí program Widget Picker.
  • Prejdite prstom po výbere miniaplikácií, kým nenájdete widget aplikácie, ktorý ste práve vytvorili.
  • Dlhým stlačením tohto widgetu ho pridáte na svoju plochu.
  • Keďže ide o prvú inštanciu tohto konkrétneho miniaplikácie, mala by sa spustiť metóda onEnabled () a uvidíte toast „onEnabled nazvaný“.
  • Zmena veľkosti miniaplikácie. Ak nastavíte minimálnu podporovanú veľkosť, skontrolujte, či nemôžete zmenšiť miniaplikáciu za túto hodnotu.
  • Otestujte, či sa ListView posúva podľa očakávania.
  • Ďalej by ste mali skontrolovať metódu onDisabled () odstránením miniaplikácie. Dlho stlačte miniaplikáciu a potom vyberte možnosť Odstrániť z úvodnej obrazovky. Keďže ide o poslednú inštanciu tohto konkrétneho miniaplikácie, mala by sa spustiť metóda onDisabled () a uvidíte toast „onDisabled nazvaný“.

To je všetko, čo potrebujete na dodanie fungujúceho miniaplikácie aplikácií pre Android, ale existuje niekoľko dodatkov, ktoré môžu často vylepšiť dojem používateľa. V nasledujúcich sekciách povzbudíme používateľov, aby si vybrali tento widget z nástroja na výber miniaplikácií tým, že vytvoria ukážku obrázka, v ktorej sa miniaplikácia zobrazuje najlepšie. Ukážem vám tiež, ako vytvoriť plne prispôsobiteľný widget pridaním konfiguračnej aktivity do projektu.

Vytvorenie ukážky ukážky miniaplikácie Android

Ak uchopíte svoje zariadenie Android a prejdete prstom po výbere miniaplikácií, uvidíte, že každý widget je reprezentovaný obrázkom, ktorý zvyčajne ukazuje, ako bude tento widget vyzerať, keď bude nakonfigurovaný na domovskej obrazovke používateľa.

Ak chcete používateľov povzbudiť, aby si vybrali váš widget, mali by ste poskytnúť ukážku obrázka, v ktorej sa zvýraznia všetky užitočné informácie a funkcie, ktoré váš widget ponúka.

Obrázok náhľadu môžete rýchlo a ľahko vytvoriť pomocou aplikácie Widget Preview, ktorá je súčasťou emulátora systému Android.

Ukážka miniaplikácie nie je zahrnutá v najnovších obrázkoch systému Android, takže budete musieť vytvoriť AVD pomocou Nougat (API Level 25) alebo staršej verzie:

  • Nainštalujte svoju aplikáciu na AVD s rozhraním API 25 alebo nižším.
  • Otvorte zásuvku aplikácie AVD a spustite aplikáciu Widget Preview.
  • Náhľad Widgetu zobrazí zoznam všetkých aplikácií, ktoré sú aktuálne nainštalované na tomto AVD; vyberte svoju aplikáciu zo zoznamu.

  • Miniaplikácia sa teraz zobrazí na prázdnom pozadí. Strávte nejaký čas úpravou a vyladením miniaplikácie, kým sa nezobrazí to najlepšie, čo môže miniaplikácia ponúknuť.
  • Keď budete spokojní so vzhľadu a obsahom miniaplikácie, vyberte možnosť Urobiť snímku.

  • Ak chcete načítať snímku, prepnite späť na Android Studio a na paneli s nástrojmi vyberte Zobraziť> Nástroje Windows> Prieskumník súborov zariadenia. Spustí sa tím Prieskumník súborov zariadenia Android Studio.
  • V Prieskumníkovi súborov zariadení prejdite na sdcard / Download. Váš ukážkový obrázok by ste mali uložiť v nasledujúcom formáte: _ori_.png

  • Tento obrázok presuňte zo služby Android Studio a umiestnite ho na ľahko prístupné miesto, napríklad na plochu.
  • Pomenujte tomuto obrazovému súboru popisný názov.
  • Presuňte súbor do priečinka, ktorý je možné presunúť do projektu.
  • Otvorte aplikáciu AppWidgetProviderInfo, ktorá je pre tento projekt collection_widget_info.xml.
  • Nájdite riadok Android: previewImage = ”@ mipmap / ic_launcher” a aktualizujte ho, aby odkazoval na ukážku obrázka.

Váš widget bude teraz používať tento nový zdroj obrázka ako svoj náhľad:

  • Nainštalujte aktualizovaný projekt do svojho fyzického zariadenia Android alebo AVD.
  • Dlho stlačte ľubovoľnú prázdnu časť úvodnej obrazovky.
  • Klepnite na Widgety, čím sa spustí nástroj Widget Picker.
  • Prejdite na svoj widget; teraz by mal používať aktualizovaný obrázok ukážky.

Prispôsobiteľné widgety: Pridanie konfiguračnej aktivity

Aktivita konfigurácie sa spustí automaticky, keď používateľ umiestni každú inštanciu widgetu na svoju domovskú obrazovku.

Existuje niekoľko dôvodov, prečo by ste mohli do svojho projektu pridať konfiguračnú aktivitu.

widgety majú tendenciu poskytovať najlepšiu používateľskú skúsenosť, keď poskytujú prístup k informáciám alebo funkciám, ktoré sú pre jednotlivého používateľa najdôležitejšie.

Po prvé, niektoré widgety vyžadujú počiatočné nastavenie, napríklad widget, ktorý zobrazuje dopravné upozornenia, bude pravdepodobne potrebovať poznať domovskú adresu používateľa, kde pracuje, a časy, kedy zvyčajne dochádzajú. Bez nejakého spôsobu zadania týchto informácií môže byť váš widget úplne zbytočný!

Okrem toho majú widgety tendenciu poskytovať najlepší dojem používateľa, keď poskytujú prístup k informáciám alebo funkciám, ktoré sú pre jednotlivého používateľa najdôležitejšie. Pridaním konfiguračnej aktivity do projektu môžete používateľom poskytnúť slobodu výberu a výberu presne čo je obsiahnuté v miniaplikácii.

Dokonca aj relatívne jednoduché úpravy, ako napríklad zmena pozadia alebo písma widgetu, môžu mať pozitívny vplyv na dojem používateľa - koniec koncov, nikto nebude oceniť widget, ktorý vizuálne narazí na zvyšok svojej domovskej obrazovky!

Nikto nebude oceniť widget, ktorý vizuálne narazí na zvyšok svojej domovskej obrazovky!

Prípadne môžete mať dlhý zoznam obsahu, ktorý chcete zahrnúť do miniaplikácie, a vy sa snažíte možnosti zúžiť. Konfiguračná aktivita môže byť spôsobom, ako dobre využiť všetky vaše nápady vytváranie preplnený, mätúci widget. Nezabudnite, že nastavenie miniaplikácie by sa nemalo cítiť ako fuška, takže ak poskytnete konfiguračnú aktivitu, odporúča sa obmedziť sa na tri možnosti konfigurácie.

Pridajme do nášho projektu konfiguračnú aktivitu!

Po prvé, naša konfiguračná aktivita potrebuje rozloženie, takže vytvorte nový súbor zdrojov rozloženia s názvom config_activity.xml.

Do tohto rozloženia pridám nasledujúce tlačidlá:

  • Konfiguračné tlačidlo, V projekte v reálnom živote by toto tlačidlo nejakým spôsobom modifikovalo miniaplikáciu, napríklad pridanie alebo odstránenie obsahu alebo zmenu frekvencie aktualizácie miniaplikácie. Kliknutím na toto tlačidlo sa jednoducho zobrazí prehľad možností konfigurácie s cieľom zachovať prehľadnosť nášho kódu.
  • Tlačidlo nastavenia, Keď je používateľ spokojný s konfiguráciou miniaplikácie, stlačením tohto tlačidla umiestnite novo nakonfigurovanú miniaplikáciu na svoju úvodnú obrazovku.

Tu je môj dokončený súbor config_activity.xml:

Vytvorte konfiguračnú aktivitu

Teraz musíme vytvoriť našu konfiguračnú aktivitu.

Ak chcete začať, vytvorte novú triedu Java s názvom ConfigActivity. V tejto aktivite sa chystáme načítať ID aplikácie Widget z zámeru, ktorý spustil konfiguračnú aktivitu. Ak tento zámer nemá ID miniaplikácie, budeme musieť zavolať metódu finish ():

Zámer = getIntent (); Doplnkové balíčky = úmysel.vyťaženia (); if (extras! = null) {appWidgetId = extras.getInt (AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {dokončiť (); }

Ďalej musíme vytvoriť zámer návratu, odovzdať pôvodnú aplikáciu appWidgetId a nastaviť výsledky z konfiguračnej aktivity:

Zámer resultValue = new Intent (); resultValue.putExtra (AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult (RESULT_OK, resultValue); skončiť(); }}}

Ak zadáte konfiguračnú aktivitu, nebude sa po spustení konfiguračnej aktivity vysielať ACTION_APPWIDGET_UPDATE automaticky, čo znamená metódu onUpdate (). nebude keď sa používateľ vytvorí inštancia vášho miniaplikácie.

S cieľom zabezpečiť, aby bol váš widget vytvorený s aktuálnymi informáciami a obsahom, vaša konfiguračná aktivita musieť spustiť prvú požiadavku onUpdate ().

Tu je kompletná ConfigActivity:

import android.app.Activity; importovať android.appwidget.AppWidgetManager; import android.os.Bundle; import android.widget.Button; import android.content.Intent; import android.view.View; importovať android.view.View.OnClickListener; importovať android.widget.Toast; public class ConfigActivity rozširuje Activity {@Override chránené void onCreate (Bundle uloženéInstanceState) {super.onCreate (uloženéInstanceState); setContentView (R.layout.config_activity); setResult (RESULT_CANCELED); Button setupWidget = (Button) findViewById (R.id.setupWidget); setupWidget.setOnClickListener (nový OnClickListener () {@Override verejné void onClick (Zobraziť v) {handleSetupWidget ();}}); Button configButton = (Button) findViewById (R.id.configButton); configButton.setOnClickListener (nový OnClickListener () {@Override public void onClick (Zobraziť v) {handleConfigWidget ();}}); } private void handleSetupWidget () {showAppWidget (); } private void handleConfigWidget () {Toast.makeText (ConfigActivity.this, "Možnosti konfigurácie", Toast.LENGTH_LONG) .show (); } int appWidgetId; private void showAppWidget () {appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; Zámer = getIntent (); Doplnkové balíčky = úmysel.vyťaženia (); if (extras! = null) {appWidgetId = extras.getInt (AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {dokončiť (); } // TO TO: Vykonajte konfiguráciu // Intent resultValue = new Intent (); resultValue.putExtra (AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult (RESULT_OK, resultValue); skončiť(); }}}

Po vytvorení konfiguračnej aktivity musíte túto aktivitu deklarovať v manifeste a uviesť, že akceptuje akciu APPWIDGET_CONFIGURE:

Nakoniec, keďže sa na konfiguračnú aktivitu odkazuje mimo rozsahu balíka, musíme túto aktivitu deklarovať v našom AppWidgetProviderInfo, ktorým je v tomto prípade súbor collection_widget_info.xml:

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

Testovanie vášho projektu

Teraz je čas vyskúšať váš dokončený projekt:

  • Nainštalujte aktualizovaný projekt na fyzické zariadenie Android alebo AVD.
  • Odstráňte všetky predchádzajúce inštancie miniaplikácie, aby ste sa uistili, že pracujete s najnovšou verziou.
  • Dlho stlačte ľubovoľnú prázdnu oblasť úvodnej obrazovky a po zobrazení výzvy vyberte miniaplikácie.
  • Vyhľadajte miniaplikáciu v nástroji na výber miniaplikácií a dlhým stlačením ju vyberte.
  • Presuňte miniaplikáciu na plochu. Konfiguračná aktivita by sa mala spustiť automaticky.
  • Kliknite na tlačidlo Vykonať určitú konfiguráciu a mal by sa zobraziť prípitok možnosti konfigurácie, ktorý potvrdzuje, že táto interakcia bola úspešne zaregistrovaná.
  • Predstavte si, že ste vylepšili nastavenia miniaplikácie a teraz ste pripravení umiestniť ich na plochu. klepnite na tlačidlo Vytvoriť miniaplikáciu a tento widget by sa mal úspešne vytvoriť.

Dokončený projekt miniaplikácie zbierky si môžete stiahnuť z GitHubu.

Zabalenie

V tomto článku sme vytvorili widget posúvateľnej kolekcie, ktorý zobrazuje množinu údajov na domovskej obrazovke používateľa.

Ak chcete pokračovať v práci s týmto projektom, môžete skúsiť pridať vlastný kód do metódy onUpdate () a vytvoriť widget, ktorý sa aktualizuje o nové informácie v intervale definovanom v súbore AppWidgetProviderInfo (collection_widget_info).

Ak vytvoríte miniaplikáciu Android, nezabudnite zdieľať svoje výtvory v komentároch nižšie!

Rytmické hry ú už dlho. Kto môže zabudnúť na Dance Dance Revolution? Pri hrách ako Rock Band a Guitar Hero me videli obrovký nárat popularity. Ako a ukazuje, exituj...

Dokonca aj v tomto veku lužieb Google Pay, Apple Pay a amung Pay, kde môžete pomocou virtuálnych platieb nakupovať položky v kutočných obchodoch a reštauráciách pomocou vojho ...

Nové Články