Направите Андроид виџет за своју апликацију

Аутор: Lewis Jackson
Датум Стварања: 13 Може 2021
Ажурирати Датум: 1 Јули 2024
Anonim
Syma X500 Foldable GPS Drone Review | Tomzon D65 “On Steroids?”
Видео: Syma X500 Foldable GPS Drone Review | Tomzon D65 “On Steroids?”

Садржај


Од раних дана ОС-а, виџети за Андроид омогућавали су корисницима да се међусобно баве својим омиљеним апликацијама, из удобности матичног екрана. Па како да направите Андроид видгет?

За програмере, видгети пружају вашој апликацији драгоцено присуство на почетном екрану корисника. Уместо да га извлачите из вида у фиоци апликације, корисници ће бити подсећени на вашу апликацију сваки пут они гледају на почетни екран - истовремено добијајући и преглед најзанимљивијег и најкориснијег садржаја ваше апликације.

Видгети дају вашој апликацији драгоцено присуство на почетном екрану корисника

У овом чланку ћу вам показати како да пружите боље корисничко искуство уз охрабривање корисника да сарађују са вашом апликацијом, креирањем Андроид видгет-а! На крају овог чланка направићете видгет за прикупљање који се може помицати и који приказује комплетни скуп података на почетном екрану корисника.

Да бисте осигурали да испоручујете врсту видгета који корисници желим Да бисмо их поставили на почетни екран, такође ћемо креирати конфигурациону активност, која ће корисницима омогућити да прилагођавају садржај, изглед и функције виџета. На крају ћу вам показати како можете да подстакнете људе да користе ваш видгет креирајући слику за преглед видгета која приказује најбоље што ваш видгет може да понуди.


Такође прочитајте: Развој за склопиве уређаје: Шта треба да знате

Шта су виџети за Андроид?

Апликативни додатак је лагана, минијатурна апликација која живи на почетном екрану корисника.

Видгети за Андроид могу да пружају низ садржаја, али углавном спадају у једну од следећих категорија:

  • Информативни виџет. Ово је видгет који се не може померати и који приказује неке информације, попут данашње временске прогнозе или датума и времена.
  • Цоллецтион додаци. Ово је клизач који се може помицати и приказује скуп повезаних података, форматиран као ЛистВиев, ГридВиев, СтацкВиев или АдаптерВиевФлиппер. Видгете за прикупљање обично подржава извор података, као што су база података или низ.
  • Контролирајте видгете. Ови виџети делују као даљински управљач који корисницима омогућава интеракцију са вашом апликацијом, без мора да га изнесе у први план. Апликације које репродукују медије, попут подцаста или музике, често имају контролне видгете који кориснику омогућавају да активирају Плаи, Паусе и Скип директно са почетног екрана.
  • Хибридни виџети. Понекад ћете можда пружити боље корисничко искуство комбиновањем елемената из више категорија. На пример, ако развијате контролни видгет за музичку апликацију, можете да омогућите Плаи, Паусе и Прескочи контроле, али такође можете одлучити да прикажете неке информације, као што су наслов песме и извођач. Ако се одлучите за мешање и слагање, онда се немојте замарати! Видгети обично пружају најбоље корисничко искуство када пружају једноставан приступ малој количини правовремених, релевантних информација или неколико често коришћених функција. Да би вам хибридни видгети били лагани, препоручује се да идентификујете примарну категорију видгета, развијете га у складу са том категоријом и онда додајте неколико елемената из секундарне категорије виџета.

Да ли мом пројекту заиста треба додатак за апликацију?

Постоји неколико разлога због којих бисте требали размотрити додавање апликационог видгета свом Андроид пројекту.


Видгети за Андроид могу побољшати корисничко искуство

Као опште правило, што је мање навигацијских корака потребно за завршетак задатка, то је боље корисничко искуство.

Давањем апликационог видгета можете уклонити више корака за навигацију из токова најчешће коришћених у апликацији. У најбољем случају, ваши корисници ће моћи да добију потребне информације само тако што ће погледати њихов почетни екран или извршити жељени задатак једноставним додиром на дугме на свом контролном виџету.

Снажнији од пречица апликација

Апликативни видгети често реагују на онЦлицк догађаје покретањем горњег нивоа у придруженој апликацији, слично пречици за апликацију. Међутим, виџети такође могу омогућити директан приступ одређеним активностима унутар апликације, на пример, додиром обавештења о новом примљеном виџету може се покренути повезана апликација са новом већ отвореном.

Уграђивањем више веза у изглед вашег видгета можете да омогућите приступ једним додиром свим најважнијим активностима апликације, уклањајући још више навигационих корака из најчешће коришћених токова.

Уметањем више веза у изглед вашег виџета можете омогућити приступ једним додиром свим најважнијим активностима апликације.

Имајте на уму да виџети реагују само на онЦлицк догађаје, што спречава кориснике да случајно комуницирају са вашим виџетом док они прелазе око почетног екрана. Једина изнимка је када корисник покушава избрисати ваш видгет повлачењем га према радњи Уклони на почетном екрану, јер ће у овом сценарију ваш виџет одговорити на вертикални кретњу прстом.

Овом интеракцијом управља Андроид систем, тако да не требате бринути о томе да ли ћете ручно имплементирати подршку за вертикални прелазак прстом у свој видгет.

Направите Андроид виџет за покретање дугорочног ангажмана

Уверивање људи да преузму вашу апликацију само је први корак ка стварању успешне Андроид апликације. Вероватно је да ако узмете свој Андроид паметни телефон или таблет и превучете се преко фиоке апликације, открит ћете више апликација које нисте користили данима, недељама или потенцијално чак месецима!

Прочитајте и:Први кораци са Фацебоок-ом за Андроид СДК

Након што се ваша апликација успешно инсталира на корисников уређај, мораћете да радите напорно како бисте је укључили и уживали у вашој апликацији. Ако вам апликација буде присутна на почетном екрану, може бити моћан алат за потицање дугорочног ангажмана, једноставно зато што је то стални подсетник да ваша апликација постоји!

Добро дизајниран виџет може такође послужити као стална реклама за вашу апликацију. Сваки пут када корисник погледа на почетни екран, ваш видгет има прилику да их активно охрабри да поново ступају у везу са вашом апликацијом, презентујући им сав најзанимљивији и најкориснији садржај ваше апликације.

Прављење видгета за апликацију за колекцију

У овом туторију ћемо правити видгет за колекцију који приказује низ као помични ЛистВиев.

Да би вам помогао да пратите животни циклус видгета за апликацију, овај видгет ће такође покренути различите здравице док се креће кроз различита стања животног циклуса. Пред крај овог водича побољшаћемо свој виџет прилагођеном претпрегледном сликом која ће бити приказана у Андроид-овом изборнику видгет-а и конфигурационом активношћу која ће корисницима омогућити да прилагоди видгет пре него што га поставе на почетни екран.

Направите нови Андроид пројекат са подешавањима по вашем избору и кренимо!

Израда изгледа вашег виџета

За почетак, дефинишите корисничко сучеље видгет-а (корисничко сучеље).

Апликативни виџети се приказују у процесу напољу апликација, тако да можете користити само распореде и приказе који подржавају РемотеВиевс.

Када правите свој изглед, ограничени сте на следеће:

  • АналогЦлоцк
  • Дугме
  • Хронометар
  • ФрамеЛаиоут
  • ГридЛаиоут
  • ИмагеБуттон
  • ИмагеВиев
  • ЛинеарЛаиоут
  • Прогрес бар
  • Релативни изглед
  • ТектВиев
  • ВиевСтуб
  • АдаптерВиевФлиппер
  • Поглед мрежа
  • ЛистВиев
  • СтацкВиев
  • ВиевФлиппер

Имајте на уму да су подкласе горњих класа и Прикази не подржана.

Креирајте нову датотеку ресурса изгледа под називом лист_видгет.кмл. Пошто ћемо своје податке приказивати користећи ЛистВиев, овај изглед углавном служи као спремник за елемент:

Популација видгета за колекцију

Затим морамо створити добављача података за наш ЛистВиев. Креирајте нову Јава класу под називом ДатаПровидер.јава и додајте следеће:

импорт андроид.цонтент.Цонтект; импорт андроид.цонтент.Интент; импорт андроид.видгет.РемотеВиевс; импорт андроид.видгет.РемотеВиевсСервице; импорт јава.утил.АрраиЛист; импорт јава.утил.Лист; импорт статиц андроид.Р.ид.тект1; увести статички андроид.Р.лаиоут.симпле_лист_итем_1; ДатаПровидер јавне класе имплементира РемотеВиевсСервице.РемотеВиевсФацтори {Листа миЛистВиев = нови АрраиЛист <> (); Контекст мЦонтект = нулл; јавни ДатаПровидер (контекст контекста, намера намера) {мЦонтект = контекст; } @ Пребрисати јавну неважећу онЦреате () {инитДата (); } @ Овервериде публиц воид онДатаСетЦхангед () {инитДата (); } @Оверриде публиц воид онДестрои () {} @Оверриде публиц инт гетЦоунт () {ретурн миЛистВиев.сизе (); } @Оверриде публиц РемотеВиевс гетВиевАт (инт позиција) {РемотеВиевс виев = нови РемотеВиевс (мЦонтект.гетПацкагеНаме (), симпле_лист_итем_1); виев.сетТектВиевТект (тект1, миЛистВиев.гет (поситион)); повратни приказ; } @Оверриде јавни РемотеВиевс гетЛоадингВиев () {ретурн нулл; } @Оверриде публиц инт гетВиевТипеЦоунт () {ретурн 1; } @ Овервериде публиц лонг гетИтемИд (инт позиција) {ретурн поситион; } @ Овервериде публиц боолеан хасСтаблеИдс () {ретурн труе; } приватна воид инитДата () {миЛистВиев.цлеар (); фор (инт и = 1; и <= 15; и ++) {миЛистВиев.адд ("ставка ЛистВиев" + и); }}}

АппВидгетПровидер: Конфигурисање вашег виџета

Да бисте креирали Андроид виџет, морате да креирате неколико датотека.

Наша прва датотека специфична за видгет је АппВидгетПровидер, који је БроадцастРецеивер где ћете дефинисати различите методе животног циклуса видгета, као што је метода која се позива када се први пут креира ваш видгет и метода која се позива када се тај видгет коначно избрише.

Направите нову Јава класу (Датотека> Ново> Јава класа) под називом ЦоллецтионВидгет.

За почетак, све датотеке добављача видгета морају се протезати из класе АппВидгетПровидер. Затим морамо учитати датотеку ресурса изгледа листе_видгет.кмл у објекат РемотеВиевс и обавестити АппВидгетМанагер о ажурираном објекту РемотеВиевс:

јавна класа ЦоллецтионВидгет проширује АппВидгетПровидер {статиц воид упдатеАппВидгет (Контекст контекст, АппВидгетМанагер аппВидгетМанагер, инт аппВидгетИд) {// Инстантиате РемотеВиевс објект // РемотеВиевс прикази = нови РемотеВиевс (контекст.гетПацкагеидНаме); сетРемотеАдаптер (контекст, прикази); // Захтевајте да АппВидгетМанагер ажурира апликацијски видгет // аппВидгетМанагер.упдатеАппВидгет (аппВидгетИд, прикази); }

Креирајте адаптер

Будући да своје податке приказујемо у ЛистВиев-у, морамо дефинирати методу сетРемотеАдаптер () у нашем АппВидгетПровидер-у. СетРемотеАдаптер () еквивалент је позивању АбсЛистВиев.сетРемотеВиевсАдаптер (), али је дизајниран да се користи у апликацијским видгетима.

У овој методи морамо дефинирати ид АдаптерВиев (Р.ид.видгет_лист) и намјеру услуге која ће на крају доставити податке нашем РемотеВиевсАдаптер - ускоро ћемо креирати ову класу ВидгетСервице.

приватни статички воид сетРемотеАдаптер (контекст контекста, коначни прикази @НонНулл РемотеВиевс) {виевс.сетРемотеАдаптер (Р.ид.видгет_лист, нови намера (контекст, ВидгетСервице.цласс)); }}

Дефинисање метода животног циклуса видгета

У нашем АппВидгетПровидер такође морамо дефинисати следеће методе животног циклуса видгета:

Дохваћање новог садржаја уз онУпдате

Метода животног циклуса вУгет онУпдате () одговорна је за ажурирање погледа вашег видгета новим информацијама.

Ова метода се зове сваки пут:

  • Корисник изводи радњу која ручно активира методу онУпдате ().
  • Прошао је одређени интервал ажурирања апликације.
  • Корисник поставља нову инстанцу овог виџета на почетни екран.
  • Намера емитовања АЦТИОН_АППВИДГЕТ_РЕСТОРЕД се шаље АппВидгетПровидер-у. Ова намера емитовања покреће се ако се видгет икад обнови из резервне копије.

Овде ћете регистровати све обрађиваче догађаја који би ваш видгет требао да користи.

Приликом ажурирања Андроид виџета, важно је запамтити да корисници могу да креирају више инстанци истог виџета. На пример, можда је ваш видгет прилагодљив и корисник одлучи да створи неколико „верзија“ које приказују различите информације или пружају приступ јединственим функцијама.

Када позовете онУпдате (), морате да одредите да ли ажурирате сваку инстанцу овог виџета или само одређену инстанцу. Ако желите да ажурирате сваку инстанцу, тада можете да користите аппВидгетИдс, што је низ ИД-ова који идентификују сваку инстанцу на уређају.

У следећем исјечку ажурирам сваку инстанцу:

@Оверриде публиц воид онУпдате (Контекст контекста, АппВидгетМанагер аппВидгетМанагер, инт аппВидгетИдс) {фор (инт аппВидгетИд: аппВидгетИдс) {// Ажурирај све инстанце овог виџета // упдатеАппВидгет (контекст, аппВидгетМанагер, аппВидгетИд) } супер.онУпдате (контекст, аппВидгетМанагер, аппВидгетИдс); }

Имајте на уму да, да би код био једноставан, ова метода онУпдате () тренутно не врши промене на видгет-у.

онЕнаблед: Извођење почетног подешавања

Метода животног циклуса онЕнаблед () зове се као одговор на АЦТИОН_АППВИДГЕТ_ЕНАБЛЕД, која се шаље када се иницијал вашег видгета дода на почетни екран за први време. Ако корисник створи две инстанце вашег виџета, тада ће онЕнаблед () бити позван за прву инстанцу, али не за секунду.

Метода животног циклуса онЕнаблед () је место где треба да извршите било које подешавање које је потребно за све инстанце вашег видгета, као што је стварање базе података која ће хранити информације о вашем виџету.

Приказаћу здравицу, тако да можете тачно да видите када се зове ова метода животног циклуса:

@Оверриде публиц воид онЕнаблед (Контекст контекста) {Тоаст.макеТект (контекст, "онЕнаблед цалл", Тоаст.ЛЕНГТХ_ЛОНГ) .схов (); }

Имајте на уму да ако корисник избрише све инстанце вашег видгета, а затим креира нову инстанцу, то се класификује као прва инстанца, а метода животног циклуса онЕнаблед () ће се поново позвати.

Чишћење, са онДисаблед

Метода онДисаблед () позива се као одговор на АЦТИОН_АППВИДГЕТ_ДИСАБЛЕД, који се покреће када корисник избрише последња инстанца вашег виџета.

Ова метода животног циклуса видгета треба да очистите све ресурсе које сте створили у методи онЕнаблед (), на пример, брисањем базе података коју сте креирали у онЕнаблед ().

Да би код био једноставан, једноставно ћу приказати здравицу сваки пут када се ова метода покрене:

@Оверриде публиц воид онДисаблед (Контекст контекста) {Тоаст.макеТект (контекст, "онДисаблед цалл", Тоаст.ЛЕНГТХ_ЛОНГ) .схов (); }

Испуњени АппВидгетПровидер

Ваша датотека ЦоллецтионВидгет сада би требала изгледати овако:

импорт андроид.аппвидгет.АппВидгетМанагер; импорт андроид.аппвидгет.АппВидгетПровидер; импорт андроид.цонтент.Цонтект; импорт андроидк.аннотатион.НонНулл; импорт андроид.цонтент.Интент; импорт андроид.видгет.РемотеВиевс; импорт андроид.видгет.Тоаст; // Прошири се из класе АппВидгетПровидер // Публиц цласс ЦоллецтионВидгет проширује АппВидгетПровидер {статиц воид упдатеАппВидгет (Контекст контекст, АппВидгетМанагер аппВидгетМанагер, инт аппВидгетИд) {// Учитај датотеку ресурса изгледа у објекат РемотеВиевс // РемотеВтеи погледа нови контекст (РемотеВтеес Виевс виев = РемотеВтеес Виевс виев нев гетПацкагеНаме (), Р.лаиоут.лист_видгет); сетРемотеАдаптер (контекст, прикази); // Информише АппВидгетМанагер о објекту РемотеВиевс // аппВидгетМанагер.упдатеАппВидгет (аппВидгетИд, прикази); } @Оверриде публиц воид онУпдате (Контекст контекста, АппВидгетМанагер аппВидгетМанагер, инт аппВидгетИдс) {фор (инт аппВидгетИд: аппВидгетИдс) {упдатеАппВидгет (контекст, аппВидгетМанагер, аппВидгетИд); } супер.онУпдате (контекст, аппВидгетМанагер, аппВидгетИдс); } @ Овервериде публиц воид онЕнаблед (Контекст контекста) {Тоаст.макеТект (контекст, "онЕнаблед цалл", Тоаст.ЛЕНГТХ_ЛОНГ) .схов (); } @ Овервериде публиц воид онДисаблед (Контекст контекста) {Тоаст.макеТект (контекст, "онДисаблед цалл", Тоаст.ЛЕНГТХ_ЛОНГ) .схов (); } приватни статички воид сетРемотеАдаптер (контекст контекста, коначни прикази @НонНулл РемотеВиевс) {виевс.сетРемотеАдаптер (Р.ид.видгет_лист, нови намера (контекст, ВидгетСервице.цласс)); }}

Датотека АппВидгетПровидерИнфо

Апликациони видгет такође захтева датотеку АппВидгетПровидерИнфо, која дефинише неколико важних својстава, укључујући минималне димензије вашег виџета и колико често га треба ажурирати.

Датотека АппВидгетПровидерИнфо смештена је у директоријум рес / кмл вашег пројекта.

Ако ваш пројекат већ не садржи ову мапу, мораћете да је креирате:

  • Кликните контролном типком рес Рес.
  • Изаберите Ново> Андроид Ресоурце Дирецтори.
  • У наредном прозору отворите падајући тип Ресоурце и изаберите кмл.
  • Име Именика би се требало аутоматски ажурирати на кмл, али ако се не догоди, мораћете да га промените ручно.
  • Притисните ОК.

Затим направите датотеку цоллецтион_видгет_инфо коју ћемо користити као АппВидгетПровидерИнфо:

  • Кликните контролном типком кмл фасцикле вашег пројекта.
  • Изаберите Ново> КСМЛ датотека са ресурсима.
  • Именујте ову датотеку цоллецтион_видгет_инфо.
  • Притисните ОК.

У нашој апликацији АппВидгетПровидерИнфо морамо да дефинишемо следећа својства:

1. андроид: превиевИмаге

Ово је цртеж који представља видгет за вашу апликацију на уређају за бирање виџета.

Ако не наведете слику прегледа, Андроид ће уместо њега користити икону ваше апликације. Да бисте охрабрили кориснике да одаберу ваш видгет са Вицкер Вицкер-а, требало би да му понудите цртеж који приказује како ће ваш видгет изгледати након што је правилно конфигурисан на почетном екрану корисника.

Најлакши начин за прављење слике за преглед је коришћење апликације Видгет Превиев која је укључена у Андроид емулатор. Ова апликација вам омогућава да конфигуришете свој видгет и затим генеришете слику коју касније можете да користите у свом Андроид пројекту.

Направит ћемо ову слику након што завршимо израду видгета, тако да ћу за сада користити аутоматски генерисани ресурс мипмап / иц_лаунцхер као привремену слику за преглед.

2. андроид: видгетЦатегори

Апликацијски виџети морају бити смештени унутар хостела апликација Видгет, који је обично почетни екран за Андроид, али може бити и покретач трећих страна, попут Евие Лаунцхер или Нова Лаунцхер.

Између нивоа АПИ-ја 17 и 20 било је могуће поставити видгете апликација на почетни екран или Лоцксцреен, али подршка за закључани заслон је застарјела у АПИ нивоу 21.

Можете одредити да ли се видгет за вашу апликацију може поставити на почетни екран, закључани екран (који Андроид назива „заштита тастатуре“) или обоје, коришћењем атрибута андроид: видгетЦатегори. С обзиром да није могуће постављати видгете на закључани екран у најновијим верзијама Андроида, циљаћемо само на почетни екран.

Да бисте сачували приватност корисника, ваш виџет не би требало да приказује било које осетљиве или приватне податке када се поставља на закључани екран.

Ако корисницима дате могућност да свој виџет поставе на закључани екран, онда би свако ко погледа корисников уређај могао потенцијално да види ваш видгет и сав његов садржај. Да би сачувао приватност корисника, ваш виџет не би требало да приказује било које осетљиве или приватне податке када се поставља на закључани екран. Ако ваш виџет садржи личне податке, можда бисте требали размотрити пружање засебних распореда почетног екрана и закључавања.

3. андроид: почетни изглед

Ово је датотека ресурса изгледа коју би ваш видгет требао користити када се постави на почетни екран, а за наш пројекат је лист_видгет.кмл.

4. андроид: ресизеМоде = "хоризонтална | вертикална"

Атрибут андроид: ресизеМоде омогућава вам да одредите да ли може да се промени величина видгет-а хоризонтално, вертикално или дуж обе осе.

Да бисте осигурали да се виџет приказује и правилно функционише на различитим екранима, препоручује се да дозволите да се виџет хоризонтално мења и окомито, осим ако немате конкретан разлог да то не учините.

5. андроид: минХеигхт и андроид: минВидтх

Ако је ваш видгет могуће променити, онда требате осигурати да корисник не смањи ваш виџет до тачке када постане неупотребљив. Можете користити атрибуте минХеигхт и минВидтх да бисте дефинисали најмању количину ваше апликације која ће се смањити када корисник промени величину.

Ове вредности такође представљају почетну величину вашег видгета, тако да ако ваш виџет не може променити величину, минХеигхт и минВидтх ће дефинисати трајно димензионирање видгета.

6. андроид: упдатеПериодМиллис

АппВидгетПровидерИнфо је такође место где ћете одредити колико често ваш видгет треба да захтева нове информације.

Најмањи подржани интервал ажурирања је једном сваких 1800000 милисекунди (30 минута). Чак и ако изјавите краћи интервал ажурирања, ваш видгет ће се и даље ажурирати само једном у пола сата.

Иако можда желите да прикажете најновије информације што је брже могуће, систем ће пробудите уређај за спавање како бисте пронашли нове информације. Честа ажурирања могу да се запале кроз батерију уређаја, посебно у периодима у којима је уређај неактиван у дужем временском периоду, као што је преко ноћи. Пружање најбољег могућег корисничког искуства значи успостављање равнотеже између ограничавања потрошње батерије и пружања нових информација у разумном временском оквиру.

Такође бисте требали да узмете у обзир врсту садржаја који ће се ваш виџет приказати.

Такође бисте требали да узмете у обзир врсту садржаја који ће се видгет-ови приказивати за Андроид. На пример, временски видгет можда ће морати да ажурира ажурирану прогнозу само једном дневно, док ће апликација која приказује новости требати чешће да се ажурира.

Да бисте пронашли овај савршени баланс, можда ћете морати да тестирате свој видгет кроз читав низ фреквенција ажурирања и измерите утицај на трајање батерије и правовременост садржаја вашег виџета. Ако имате вољну групу тестера, онда бисте могли чак и поставити А / Б тестирање, да видите да ли се неке фреквенције ажурирања примају позитивније од других.

Аалсо чита: АндроидМанифест.кмл све што треба да знате

Коначно, након што идентификујете савршен интервал ажурирања, можда ћете желети да користите краћи интервал приликом развоја и тестирања апликације. На пример, могли бисте да користите најкраћу могућу учесталост ажурирања (андроид: упдатеПериодМиллис = ”1800000 ″) када тестирате да се апликација активира исправно, а затим промените ову вредност пре него што апликацију пустите широј јавности.

Испуњена АппВидгетПровидерИнфо

Готова цоллецтион_видгет_инфо.кмл датотека треба да изгледа овако:

Не затрпавајте почетни екран корисника!

Да бисте постарали да почетни екран никада не буде затрпан, додаћемо мало видова и маргине на наш видгет. Ако ваш пројекат већ не садржи дименс.кмл датотеку, мораћете да је креирате:

  • Кликните контролном типком вредности вредности вашег пројекта.
  • Изаберите Ново> Датотека ресурса вредности.
  • Дајте овој датотеци име дименс.
  • Притисните ОК.

Отворите своју датотеку дименс.кмл и дефинирајте сљедеће вриједности маргине и паддинга:

10дп 8дп

Слање података на видгет

Затим треба да направимо услугу видгета која ће бити одговорна за слање наших података о прикупљању у виџет.

Креирајте нову Јава класу (Нова> Јава класа) која се зове ВидгетСервице и додајте следеће:

импорт андроид.цонтент.Интент; импорт андроид.видгет.РемотеВиевсСервице; јавна класа ВидгетСервице проширује РемотеВиевсСервице {@Оверриде публиц РемотеВиевсФацтори онГетВиевФацтори (Намера) {врати нови ДатаПровидер (ово, намера); }}

Регистровање вашег виџета у Манифест

Сада морамо да уведемо неке измене у манифест нашег пројекта.

За почетак отворите Манифест и региструјте свој виџет као БроадцастРецеивер. Такође морамо додати филтер намере за радњу андроид.аппвидгет.ацтион.АППВИДГЕТ_УПДАТЕ:

Затим требате навести добављача видгета за апликације:

На крају, морамо пријавити услугу која ће послати податке нашем видгет-у, што је у овом случају класа ВидгетСервице. Ова услуга захтева дозволу за андроид.пермиссион.БИНД_РЕМОТЕВИЕВС:

Ставите свој видгет на тест

Ако сте пратили овај водич, сада ћете имати комплетни видгет за прикупљање који приказује скуп података на почетном екрану корисника.

Ако је ово Андроид пројекат из стварног живота, обично бисте проширили методе животног циклуса, посебно методу онУпдате (), али ово је све што је потребно да направимо видгет који можете инсталирати и тестирати на Андроид уређају:

  • Инсталирајте овај пројекат на компатибилни Андроид паметни телефон, таблет или АВД (Андроид Виртуал Девице).
  • Дуго притисните било који празан део почетног екрана и изаберите ставку Видгетс када се то од вас затражи; ово покреће алатку за бирање виџета.
  • Прелазите прстом по изборнику видгета док не пронађете управо направљени додатак.
  • Дуго притисните овај виџет да бисте га додали на почетни екран.
  • Пошто је ово прва инстанца овог посебног виџета, требало би да се покрене метода онЕнаблед () и видећете "онЕнаблед зван" здравицу.
  • Промените величину виџета. Ако поставите минималну подржану величину, тада проверите да ли не можете да смањите виџет мимо ове вредности.
  • Тестирајте да се ЛистВиев помиче, као што се очекивало.
  • Затим би требало да проверите методу онДисаблед () брисањем видгета. Дуго притисните видгет, а затим изаберите Ремове са почетног екрана. Пошто је ово последња инстанца овог посебног виџета, требало би да се покрене метода онДисаблед () и видећете тост "онДисаблед зван".

Ово је све што вам је потребно за испоруку функционалног видгета за Андроид апликацију, али постоји неколико додатака који често могу побољшати корисничко искуство. У следећим одељцима охрабрићемо кориснике да одаберу овај видгет из програма Вицкер Вицкер, тако што ћемо креирати слику за преглед која најбоље приказује видгет. Такође ћу вам показати како да креирате видгет који је потпуно прилагодљив додавањем активности конфигурације вашем пројекту.

Прављење слике за преглед Андроид виџета

Ако зграбите Андроид уређај и превучете се помоћу уређаја за бирање виџета, видећете да је сваки виџет представљен сликом, која обично показује како ће овај виџет изгледати након што је конфигурисан на почетном екрану корисника.

Да бисте охрабрили кориснике да одаберу ваш видгет, требало би да му дате слику за преглед која истиче све корисне информације и функције које ваш видгет може да понуди.

Можете брзо и лако да направите слику за преглед помоћу апликације Видгет Превиев која је укључена у Андроид емулатор.

Имајте на уму да Преглед Видгет-а није укључен у најновије слике система Андроид, тако да ћете морати да креирате АВД користећи Ноугат (АПИ Левел 25) или старији:

  • Инсталирајте апликацију на АВД који има АПИ 25 или старији.
  • Отворите ладицу АВД-ове апликације и покрените апликацију Преглед видгета.
  • Преглед видгета ће приказати листу сваке апликације која је тренутно инсталирана на овом АВД-у; одаберите апликацију са листе.

  • Ваш виџет ће сада бити приказан на празној позадини. Проведите мало времена промену величине и подешавања видгета док не покаже оно најбоље што ваш видгет може да понуди.
  • Након што сте задовољни изгледом и садржајем свог виџета, изаберите Снимите снимак.

  • Да бисте преузели снимку, вратите се на Андроид Студио и на траци са алаткама изаберите Виев> Тоол Виндовс> Девице Филе Екплорер. Ово покреће Истраживач датотека уређаја Андроид Студио.
  • У програму Девице Филе Екплорер идите на сдцард / Довнлоад. Требали бисте пронаћи своју претпрегледну слику сачувану у следећем формату: _ори_.пнг

  • Превуците ову слику из Андроид студија и одбаците је негде лако доступну, попут радне површине.
  • Дајте овој датотеци слике описно име.
  • Превуците и испустите датотеку у директоријум који се налази у пројекту.
  • Отворите свој АппВидгетПровидерИнфо који је за овај пројекат цоллецтион_видгет_инфо.кмл.
  • Пронађите линију андроид: превиевИмаге = ”@ мипмап / иц_лаунцхер” и ажурирајте је да бисте референцирали вашу слику за преглед.

Ваш видгет ће сада користити овај нови ресурс слике као слику за преглед:

  • Инсталирајте ажурирани пројекат на физички Андроид уређај или АВД.
  • Дуго притисните било који празан део почетног екрана.
  • Куцните на Видгете који покреће изборник видгета.
  • Дођите до свог виџета; сада би требало да користи ажурирану слику за преглед.

Прилагодљиви видгети: Додавање конфигурационе активности

Активност конфигурације покреће се аутоматски када корисник постави сваку инстанцу вашег видгета на почетни екран.

Постоји неколико разлога због којих бисте желели да додате активност конфигурације у свој пројекат.

видгети обично пружају најбоље корисничко искуство када пружају приступ информацијама или функцијама које су најважније за појединог корисника.

Прво, неки видгети захтевају почетно подешавање, на пример, видгет који приказује упозорења о саобраћају можда ће морати да зна кућну адресу корисника, где ради и време када обично путују. Без начина да унесете ове информације, ваш видгет може бити потпуно бескористан!

Поред тога, видгети обично пружају најбоље корисничко искуство када пружају приступ информацијама или функцијама које су најважније за појединог корисника. Додавањем конфигурационе активности у свој пројекат, можете корисницима дати слободу избора и избора баш тако шта је укључено у ваш виџет.

Чак и релативно једноставна прилагођавања, попут промене позадине или фонта видгет-а, могу имати позитиван утицај на корисничко искуство - уосталом, нико неће ценити видгет који се визуелно сукобљава са остатком почетног екрана!

Нико неће ценити виџет који се визуелно сукобљава са остатком почетног екрана!

Алтернативно, понекад можете имати дугу листу садржаја који желите да уврстите у свој виџет, а ви се трудите да сузите своје могућности. Активност конфигурације може бити начин да све своје идеје добро искористите, без стварајући збуњен, збуњујући додатак. Имајте на уму да постављање видгета не би требало да буде досадно, па ако обезбедите конфигурациону активност, препоручује се да се ограничите на три опције конфигурације.

Додајмо конфигурациону активност у наш пројекат!

Прво, нашој активности за конфигурацију потребан је изглед, па креирајте нову датотеку ресурса изгледа под називом цонфиг_ацтивити.кмл.

На овај изглед ћу додати следеће тастере:

  • Дугме за конфигурацију. У пројекту из стварног живота, ово дугме би на неки начин изменило виџет, на пример додавањем или уклањањем садржаја или променом учесталости ажурирања виџета. Да бисмо лакше сачували наш код, кликом на овај гумб једноставно ће се приказати здравица са опцијама конфигурације.
  • Дугме за подешавање. Једном када је корисник задовољан конфигурацијом видгета, притиском на ово дугме поставиће се новоконфигурирани виџет на почетни екран.

Ево моје довршене датотеке цонфиг_ацтивити.кмл:

Креирајте активност конфигурације

Сада морамо да креирамо активност конфигурације.

За почетак креирајте нову Јава класу под називом ЦонфигАцтивити. У овој активности ћемо преузети ИД апликације видгет из намере која је покренула активност конфигурације. Ако ова намера нема ИД виџета, мораћемо да позовемо методу Финисх ():

Намера намера = гетИнтент (); Бундле ектрас = интент.гетЕктрас (); иф (додаци! = нулл) {аппВидгетИд = ектрас.гетИнт (АппВидгетМанагер.ЕКСТРА_АППВИДГЕТ_ИД, АппВидгетМанагер.ИНВАЛИД_АППВИДГЕТ_ИД); ако (аппВидгетИд == АппВидгетМанагер.ИНВАЛИД_АППВИДГЕТ_ИД) {Финисх (); }

Затим морамо креирати повратну намјеру, прослиједити оригинални аппВидгетИд и поставити резултате конфигурацијске активности:

Интент ресултВалуе = нови намера (); ресултВалуе.путЕктра (АппВидгетМанагер.ЕКСТРА_АППВИДГЕТ_ИД, аппВидгетИд); сетРесулт (РЕСУЛТ_ОК, резултатВалуе); завршити (); }}}

Ако наведете конфигурациону активност, емисија АЦТИОН_АППВИДГЕТ_УПДАТЕ неће бити аутоматски послата када се покрене активност конфигурације, што значи метода онУпдате () неће бити позван када корисник креира инстанцу вашег виџета.

Да бисте осигурали да ваш видгет буде креиран помоћу ажурних информација и садржаја, ваша конфигурациона активност мора покрените први захтев за упУпдате ().

Ево довршене ЦонфигАцтивити:

импорт андроид.апп.Ацтивити; импорт андроид.аппвидгет.АппВидгетМанагер; импорт андроид.ос.Бундле; импорт андроид.видгет.Буттон; импорт андроид.цонтент.Интент; импорт андроид.виев.Виев; импорт андроид.виев.Виев.ОнЦлицкЛистенер; импорт андроид.видгет.Тоаст; Јавна класа ЦонфигАцтивити проширује активност {@Оверриде заштићена воид онЦреате (Бундле савеИнстанцеСтате) {супер.онЦреате (савеИнстанцеСтате); сетЦонтентВиев (Р.лаиоут.цонфиг_ацтивити); сетРесулт (РЕСУЛТ_ЦАНЦЕЛЕД); Буттон сетупВидгет = (Дугме) финдВиевБиИд (Р.ид.сетупВидгет); сетупВидгет.сетОнЦлицкЛистенер (нови ОнЦлицкЛистенер () {@Оверриде публиц воид онЦлицк (Виев в) {хандлеСетупВидгет ();}}); Буттон цонфигБуттон = (Дугме) финдВиевБиИд (Р.ид.цонфигБуттон); цонфигБуттон.сетОнЦлицкЛистенер (нови ОнЦлицкЛистенер () {@Оверриде публиц воид онЦлицк (Виев в) {хандлеЦонфигВидгет ();}}); } приватна воид хандлеСетупВидгет () {сховАппВидгет (); } приватна воид хандлеЦонфигВидгет () {Тоаст.макеТект (ЦонфигАцтивити.тхис, "Опције конфигурације", Тоаст.ЛЕНГТХ_ЛОНГ) .схов (); } инт аппВидгетИд; приватна воид сховАппВидгет () {аппВидгетИд = АппВидгетМанагер.ИНВАЛИД_АППВИДГЕТ_ИД; Намера намера = гетИнтент (); Бундле ектрас = интент.гетЕктрас (); иф (додаци! = нулл) {аппВидгетИд = ектрас.гетИнт (АппВидгетМанагер.ЕКСТРА_АППВИДГЕТ_ИД, АппВидгетМанагер.ИНВАЛИД_АППВИДГЕТ_ИД); ако (аппВидгетИд == АппВидгетМанагер.ИНВАЛИД_АППВИДГЕТ_ИД) {Финисх (); } // ТО ДО: Извршите конфигурацију // Интент ресултВалуе = нев Интент (); ресултВалуе.путЕктра (АппВидгетМанагер.ЕКСТРА_АППВИДГЕТ_ИД, аппВидгетИд); сетРесулт (РЕСУЛТ_ОК, резултатВалуе); завршити (); }}}

Након што сте креирали конфигурациону активност, морате да је пријавите у Манифесту и наведете да ли прихвата акцију АППВИДГЕТ_ЦОНФИГУРЕ:

Коначно, с обзиром на то да се активност активности конфигурације односи изван оквира пакета, ту активност морамо пријавити у нашем АппВидгетПровидерИнфо, што је у овом случају датотека цоллецтион_видгет_инфо.кмл:

андроид: цонфигуре = "цом.јессицатхорнсби.цоллецтионвидгет.ЦонфигАцтивити">

Тестирање вашег пројекта

Сада је вријеме да тестни тест завршите:

  • Инсталирајте свој ажурирани пројекат на физички Андроид уређај или АВД.
  • Избришите све претходне инстанце видгета како бисте осигурали да радите са најновијом верзијом.
  • Дуго притисните било које празно подручје почетног екрана и изаберите ставку Видгетс када се то од вас затражи.
  • Пронађите свој видгет у изборнику видгета и притисните дугме да бисте га одабрали.
  • Баците виџет на почетни екран. Активност конфигурације требало би да се покрене аутоматски.
  • Кликни на дугме Изведи неку конфигурацију и појави се здравица са опцијама конфигурације која потврђује да је ова интеракција успешно регистрована.
  • Замислите да сте извршили подешавања виџета и сада сте спремни да га поставите на почетни екран; додирните дугме Цреате Тхе Видгет и овај виџет би требало да буде успешно креиран.

Пројект довршене колекције видгет можете преузети са ГитХуб-а.

Окончање

У овом смо чланку направили померљиви видгет за прикупљање који приказује скуп података на почетном екрану корисника.

Ако желите да наставите да радите с овим пројектом, покушајте да додате свој код методи онУпдате (), да креирате видгет који се ажурира новим информацијама у интервалу одређеном у вашој АппВидгетПровидерИнфо датотеци (цоллецтион_видгет_инфо).

Ако направите Андроид виџет, будите сигурни да ћете поделити своје креације у коментарима испод!

Отворени извор има пуно предности. То је флексибилан стандард, помаже заједници, а заједница може помоћи да се пројекти отвореног кода развијају. Андроид је један од најпопуларнијих и најснажнијих пр...

Сада смо дошли до тачке у којој многи водећи телефони коштају више од 1000 долара без уговора. Десетине милиона људи сада у џепове, вреће или торбице стављају мале, скупе уређаје који се могу бацити, ...

Избор Уредника