Implementarea designului widget-urilor Android, proporțiilor, transparenței

Implementarea designului widget-urilor Android, proporțiilor, transparenței

Astăzi este greu să-ți imaginezi un dispozitiv Android fără widget-uri. Acestea au apărut în versiunea Android 1.5 și au fost revăzute puternic în Android 3.0 și 3.1. Widgeturile servesc pentru accesul rapid la informațiile despre aplicații, gestionează funcțiile aplicației fără să se conecteze la acestea și pot fi personalizate pentru utilizator.







Ușurința de utilizare a widget-urilor și popularitatea acestora au dus la creșterea cererii pentru dezvoltarea de widget-uri personalizate pentru aplicațiile Android. Cu toate acestea, punerea în aplicare a widget-urilor nu este la fel de ușoară cum ar părea la prima vedere.

Widgeturile widget pot fi împărțite în trei tipuri principale:

Implementarea designului widget-urilor Android, proporțiilor, transparenței

Informații: furnizați cele mai actuale informații despre starea aplicației. Acest tip include widget-uri vreme, ceasuri, cotații valutare și altele.

Widgets lists: servesc la afișarea colecțiilor de același tip de informații. De exemplu, o listă de scrisori, știri sau lista de sarcini pentru ziua curentă.

Controlați widget-uri: asigurați acces rapid la funcțiile frecvent utilizate ale aplicației astfel încât utilizatorul să poată efectua acțiunile necesare direct de pe ecranul principal al dispozitivului fără a porni aplicația.

Majoritatea widgeturilor sunt de tip combinat, adică combina elemente ale fiecăruia dintre elementele listate. Dar acest lucru nu elimină dificultățile care pot apărea în cursul implementării lor.

Folosind exemplul proiectului nostru recent, vă vom arăta cum să implementați widgetul Android pentru cerințele specifice ale clienților și să depășiți problemele care apar în timpul dezvoltării.

De la unul dintre clienții obișnuiți ai companiei Azoft - Novotelecom (furnizor de Internet "Electronic City") - a fost primită o cerere pentru dezvoltarea aplicației Contului personal. Aplicația este destinată utilizatorilor ISP. Cu ajutorul acestuia, puteți afla soldul contului, completați-l, activați plata amânată și conectați și noi opțiuni, modificați planul tarifar și multe altele.

În cadrul proiectului, sarcina a fost să pună în aplicare widget-ul aplicației.

Implementarea designului widget-urilor Android, proporțiilor, transparenței

Crearea widget-ului a asumat următoarele cerințe:

  • Widget-ul ar trebui să afișeze datele contului curent și să afișeze ora ultimei actualizări.
  • Widgetul trebuie să aibă două butoane: accesați ecranul de setări și actualizați forța la cererea utilizatorului.
  • Ar trebui să aibă un ecran de configurare cu capacitatea de a seta timpul pentru actualizarea datelor contului și schimbarea transparenței widget-ului.

Principala dificultate în timpul sarcinii a fost aceea de a configura corect funcțiile de widget pentru diferite dispozitive Android și orientări ale ecranului.

punerea în aplicare

La implementarea widget-urilor Android, dezvoltatorul trebuie să funcționeze întotdeauna cu patru instrumente-cheie:







  • Fișier metadate. Descrie setările generale ale widget-ului și include toate părțile widgetului, cum ar fi un fișier de marcare și o clasă pentru ecranul de configurare.
  • Clasa furnizorilor. Aici sunt implementate metode pentru manipularea evenimentelor widget, cum ar fi adăugarea unui widget pe ecran, schimbarea, eliminarea de pe ecran și altele.
  • Fișier de marcare widget. Afișează modul în care widget-ul arată în ecranul principal.
  • Widget setări ecran. Apare imediat după ce widgetul este mutat în ecranul principal.

Detalii despre implementare sunt descrise în developer.android.com. aici vorbim doar despre aspecte legate de afișarea widget-urilor, pe care suntem cei mai dragi.

Când am început să creăm primul prototip al widgetului, am dat peste două probleme.

În primul rând, ecranele celulare ale dispozitivelor mobile au dimensiuni diferite pentru orientare verticală și orizontală. Aceasta înseamnă că celula însăși este întinsă vertical și își schimbă dimensiunea atunci când se schimbă orientarea ecranului. Din acest motiv, widgetul cu aranjamentul orizontal al dispozitivului se întinde pe întreaga gamă de celule disponibile. Acest lucru sa întâmplat și cu widget-ul nostru, când a fost creat primul prototip.

Implementarea designului widget-urilor Android, proporțiilor, transparenței

În al doilea rând, widgetul rulează într-un proces diferit, astfel încât clasa RemoteViews este utilizată pentru a fi afișată, pentru care sunt disponibile numai câteva clase de vizualizare și nu pot fi utilizate chiar și derivate din ele. Ca rezultat, nu puteți supraîncărca ImageView și calculați în interior proporțiile fundalului.

Convins că abordarea standard pentru a crea un widget nu funcționează, am început să căutăm o soluție pentru a aduce widgetul în concordanță cu designul dorit:

Datorită faptului că marginile fundalului sunt rotunjite, puteți folosi fie png, fie forma. Ne-am oprit la png.

În proiectare, widget-ul a fost afișat orizontal, iar celulele de pe dispozitivele Android sunt verticale. Pentru a păstra proporțiile widgetului, am fixat înălțimea și lățimea pentru aspect. Și pentru ca toate widgeturile să aibă dimensiunea potrivită, aspectul widgetului trebuia să fie specificat pentru mai multe permisiuni.

Transparența fundalului se modifică dinamic și depinde de setările widget-ului. Pentru a modifica obiectul RemoteViews, widgetul are parametrii setInt, setFloat, setBitmap și alte metode, în care identificatorul de vizualizare, numele metodei și parametrul pentru această metodă sunt transferate ca parametri.

Următorul pas pentru setarea fundalului a fost utilizarea metodei setBitmap:

Pentru a modifica transparența fundalului, am schimbat mai întâi pixelul după pixel din Bitmap și apoi l-am înlocuit pe fundal.

Lucrați cu alfa

La început am înlocuit pur și simplu transparența png cu cea necesară. Aceasta este, întreaga imagine a fost expusă la alfa, egală cu 1, rezultând în colțuri au dobândit o culoare neagră.

Implementarea designului widget-urilor Android, proporțiilor, transparenței

Apoi am decis să schimbăm alfa numai la pixeli opaci. Cu toate acestea, unghiurile s-au dovedit a fi ascuțite, cu pixeli lipiți pe margini, deoarece în png neteditatea colțurilor este obținută de pixeli cu alfa diferiți.

Implementarea designului widget-urilor Android, proporțiilor, transparenței

Apoi am decis să recurgem la o altă îmbunătățire - pentru a schimba alfa numai pentru pixeli cu o vizibilitate mai mare decât alfa curent. Acest lucru a făcut posibilă păstrarea alfa a pixelilor cu o transparență mai mare, care oferă o vedere netedă a colțurilor.

Implementarea designului widget-urilor Android, proporțiilor, transparenței

După mai multe încercări de a stabili transparența cu alfa, am obținut în final forma dorită a widget-ului:

Implementarea designului widget-urilor Android, proporțiilor, transparenței

Având în vedere orientarea verticală a celulelor în Android, widget-ul însuși a ocupat mai mult spațiu decât partea vizibilă. Aceasta înseamnă că numai o imagine cu o anumită dimensiune este afișată pentru utilizator.

Desigur, această metodă ne-a stabilit un anumit cadru: pentru a face widgetul să arate cât mai mult posibil, a trebuit să creăm un aspect separat pentru fiecare dimensiune. Cu toate acestea, soluția propusă de noi ne permite să ignorăm limitările inerente widgeturilor și, prin urmare, își îndeplinește sarcina.

layout = buton_countshow_faces = truewidth = 450action = likecolorscheme = lightheight = 21locale = en_US "style =" border: none; overflow: ascuns; lățime: 90px; înălțime: 21px; "class =" alignright ">







Trimiteți-le prietenilor: