Prin Android se intelege ata o platforma software cat si un sistem de operare [616020]
1 Android
Prin Android se intelege ata o platforma software cat si un sistem de operare
destinat in mod special dispozitivelor mobile, cu toate acestea sistemul de operare
poate fi folosit si pe alte dispozitive cum ar fi televizoarele. Dezvoltarea a fost
realizata cu ajutorul firmei Google iar ulterior a fost preluat de OHA (Open Handset
Alliance), o alianta comerciala formata di 48 de companii, printre care se enumera si
Google, ce au ca activitate dezvoltarea de hardware, software si telecomunicatii.
Scopul formari acestei aliante fiind acela de a dezvolta standarde pentru
dispozitivele mobile ce au la baza nucleul Linux.
Android este marca inregistrata, cu toate acestea datorita suitei software de
tipul open source, oricine se poate bucura gratuit de acces integral la codul sursa cu
ajutorul unui limbaj de programare. Ca limbaj de programare poate fi folosita o gama
larga de limbaje, cu toate acestea Google ofera sprijin in mod oficial unui singur
limbaj si anuma Java, restul limbajelor ne fiind recomandate.
Pentru instalarea unei aplicatii pe orice dispozitiv ce ruleaza un sistem
android este suficienta compilarea codului sursa, impreuna cu toate resursele
necesare pentru buna functionare a aplicatiei, in arhive de tipul .apk. Aceste arhive
v-or fi tratate ca aplicatii unitare de catre sistemul android.
Accesul liber la codul sursa si licenta gratuita a facilitat intr-un mod incredibil
dezvoltarea aplicatiilor pe sistemul android. Existand in momentul de fata peste 190
de milioane de telefoane mobile ce foloseste acest sistem de operare iar numarul lor
se extinde cu 1 milion de noi utilizatori in fiecare zi.
1.1 Scurt istoric
Totul a inceput in iulie 2005 cand Google a achizitionat o mica companie de
tip startup din Palo Alto, California, SUA cu denumirea Android Inc. Lipsa cunoasteri
despre activitatile sustinute de Android Inc, se stia doar ca faceau software pentru
telefoane mobile, a creat zvonuri puternice cum ca google ar fi interesat sa intre pe
piata telefoniei mobile, desi nimeni nu stia ce rol ar putea indepline pe aceasta piata.
Intre timp Google lucra la un proiect condus de Rubin ce avea ca scop dezvoltarea
unui sitem de operare flexibil, upgradabil pentru dispozitivele mobile ce se baza pe
Linux. Momentul in care Google a prezentat produsul sau mai multor operatorilor de
retele de telefonie mobila si producatori de telefonie mobila, in anul 2006 a creat noi
zvonuri cum ca Google vor sa creeze propiul dispozitiv mobil si chiar ca exista 30 de
telefoane prototip deja pe piata.
In 5 noiembrie 2007 Google a format o alianta numita OHA (Open Handset
Alliance) formata din urmatori membri: Google, Intel, Motorola, HTC, T-Mobile,
Nvidia, Qualcomm si Sprint Nextel, cu scopul de a crea standarde deschise pentru
dispozitivele mobile. O data cu anuntul public al forari OHA a fost prezentat si primul
produs, numit Android, ce era o platforma pentru dispozitivele mobile ce avea la
baza nucleul linux. In data de 9 decembrie 2008, s-au alaturat proiectului Android 14
membri noi, printre care se numara: Sony Ericsson, Toshiba Corp, Vodafone si alti.
In 21 octombrie 2008, Google a facut disponibil proiectul android ca Open
Souce sub licenta Apache. Cu toate acestea au aparut o gramada de critici la adresa
Android care acuzau firma Google ca nu au pus tot codul ca Open Source si ca
unele parti ale SDK-ului au ramas ca sursa inchisa si sub proprietatea Google. De
altfel se crede ca acest lucru ca Google sa poata controla platforma.
1.2 Structura de baza android
Structura sa este una simpla bazata pe patru nivele baza fiind nucleul Linux.
Aceasta structura este prezenata in figura 1.1
Figura 1.1
Prezentarea celor patru nivele ale sistemului de operare Android:
1. Nivelul aplicatiei:
○ La acest nivel se gasesc toate aplicatiile software ce vin odata
cu sistemul de operare cum ar fi:managerul de contacte, clientul
de email, browserul web si multe alte aplicati similare.
○ Tot la acest nivel se gasesc si aplicatiile instalate ulterior de pe
Magazin Play sau alte surse. Aplicati ce in mare parte sunt
scrise in Java dar si unele ce sunt scrise intr-un alt limbaj de
programare.
2. Nivelul framework-ului:
○ Acest nivel este un cadru folosti la dezvoltarea diverselor
aplicatii, oferindule o baza solida de pe care sa inceapa
dezvoltarea/
○ Tot el contine o multitudine de clase si sisteme generale pentru
a face dezvoltarea aplicatiilor mult mai usoara. Majoritatea
sistemelor si claselor prezente in acest nivel sunt necesare
pentru dezvoltarea aprope oricarei apicatii.
○ Exemple de clase si sisteme ar fi: managerul de ferestre,
sistemul de view-uri, managerul de resurse, managerul de
notificari si multe altele.
3. Nivelul librariilor software:
○ Acest nivel detine la comun toate librariile necesare la buna
functionare a aplicatiilor software. Exemple de librarii ar putea fi
librarii: audio, video, 3D, 2D, webKit, SSL si multe altele.
○ Tot acest nivel mai detine si modulul “Android Runtime” ce
permite rularea aplicatiilor Java in masini virtuale independente.
○ Toate aplicatiile inainte de a fi rulate in masini virtuale sunt
compilate de DVM (Dalvik Virtual Machine) in formatul .dex
(Dalvik Executable) la momentul executiei aplicatiiei. Acest
lucru permite o mobilitate uimitoare a aplicatiilor Java, ne mai
fiind nevoie creerea unei noi aplicatii pentru fiecare platforma ci
fiecare aplicatie are capacitatea de a se adapta fiecarui sistem
ce detine DVM.
4. Nivelul Linux Kernel:
○ Acest nivel este insusi nivelul sistemului de operare linux, ce
este scris aproape in totalitate in limbajul de programare C.
○ Acest nivel face legatura intre software si hardware prin
intermediul diferitelor drivere si managere cum ar fi: driverul
audio, driverul pentru camera, driverul WiFi si multe altele.
1.3 Android Studio
Android Studio este un IDE dezvoltat de Google cu scopul de a facilita
dezvoltarea de software pentru dispozitive cu sisteme de operare android. In data de
16 Mai 2013 a fost primul anunt public la o conferinta tinuta de Google iar prima
versiune stabila a fost anuntata abea in luna Decembrie a anului 2014. Pentru
folosirea programului Android Studio este necesara atat instalarea sa cat si
instalarea programului Java SDK. Iar pentru rularea aplicatiei avem optiunea atat a
ne conecta propriul telefon prin intermediul unui cablu USB cat si creerea unui
telefon virtual cu ajutorul instrumentelor puse la dispozitie de Android Studio.
Exista o gama larga de soft-uri ce pot fi folosite la dezvoltarea aplicatiilor
android, dintre care cele mai des folosite sunt: Visual Studio si Eclipse. Avantajul
acestui software consta in modul in care a fost conceput special pentru sistemele
android si numeroaselor facilitati oferite pentru dezvoltarea aplicatiilor android.
Printre aceste facilitati se enumera:
● Generarea a mai multor fisiere APK
● Rularea codului instant
● Editarea codului intr-un mod inteligent
● Rularea rapida a diferitelor tipuri de emulatoare
● Sistem de construc ț ie robust ș i flexibil
● Dezvolta ț i pentru toate dispozitivele Android
● Integrare cu GitHub
Pentru dezvoltarea unei aplicati care sa poata fi comercializata, in ciuda
faptului ca Android Studio ofera de la sine o gama larga de unelte ajutatoare si de
toate instrumentele necesare pentru comercializare, mai este nevoie de foarte multa
creativitateprecum si te stapanirea unui limbaj de programare, de recomandat java,
ce este orientat pe obiect. De altfel mai este nevoie si de parcurgerea unor etape
relativ simple:
I. Stabilirea principalelor atribute si functionalitati ale aplicatiei
II. Stabilirea unui design simplu si util. De recomandat ar fi sa se foloseasca un
editor grafic, de exemplu: Sketch pentru pentru mac sau PhotoShop pentru
windows, se poate folosi orice editor. Si sa se respecte limbajul de design,
Material Design, creat de firma Google
III. Dezvoltarea aplicatiei
IV. Scrierea testelor ui test si unit test
1.3.1 Interfata
Android Studio are o interfata foarte complexa si destul de greoaie pentu un
incepator, insa o data ce te obisnuiesti cu ea vei observa ca este foarte utila
oferintuti acces usor si rapid aproape la orice unealta vei avea nevoie. Desi lasa loc
si de cateva inbunatatiri majore. Dar tinand cont ca aplicatia s-a dezvoltat in timp
rezolvand pe parcurs tot felul de nevoi iar corectiile ulterioare fiind destul de greoaie
de realizat din cauza numarului mare de utilizatori ce deja s-au obisnuit cu aceasta
interfata, putem spune ca s-a dezvoltat destul de rezonabil.
Fig 1.1 Interfata Android Studio
Interfata include mai multe elemente cum ar fi:
● Structura proiectului – Se regaseste in partea stanga a ferestrei si contine
toate fisierele cuprinse in proiect. Cu ajutorul butonului de deasupra sectiuni
se poate interschimba modul de structurare. Cel mai uzual mod fiind cel
standard si anume monul Android. Modul Android structureaza fisierele pe
module iar la final se afla Grandle Scripts. Fiecare modul la randul lui este
impartit in trei sectiuni:
○ Manifests care tine fisierele cu caracter sensibil cum ar fi: activitatile
folosite si setarile lor, permisiunile necesare aplicatiei si multe altele
○ Java care tine toata partea de cod sursa structurat in doua foldere.
Unul tine functionalitatea modulului iar celalat fisierele de teste pentru
acel modul.
○ Res acest fisier inglobeaza toate resursele folosite de modulul
respectiv. Structurat la randul sau in mai multe foldere:
ș Drawable contine toate imaginile de orice fel, inclusif cele
generate prin cod specific, in mai multe dimensiuni.
ș Layout contine toate view-urile modulului in fisiere de tip .xml
ș Menu contine meniurile folosite de modul
ș Values contine toate valorile folosite in modul sub un singur
exemplar astfel incat cand vei dori sa schimbi unele valori sa le
poti face rapid si usor. Acest flder la randul lui este structurat in
mai multe fisiere, printre care se enumera: dimensions, strings,
styles si multe altele.
● Terminalul – terminalul se afla in partea de jos a aplicatiei si ne ofera acces
rapid la sistemul de operare pe care ruleaza Android Studio. Terminalul este
echivalentul cmd-ului pe windows sau a terminalului pe sistemul OSX si
Linux.
● Android Monitor – acest tab se afla langa cel de terminal si contine logarea
tuturor activitatilor ce au loc la rularea aplicatiei. Odata deschis tabul se poate
selecta din partea superioara a tabului atat dispozitivul de pe care sa se
colecteze logurile cat si procesul.
● Run si debug mode – aceste doua butoane se afla in bara superioara a
aplicatiei. Ambele butoane fac in principiu acelas lucru, rularea modulului
selectat in butonul alaturat, diferenta consta in faptul ca butonul de debug
mode ataseaza si functia de debug. Functia de debug poate fi si adaugata
ulterior, dupa rularea aplicatiei cu ajutorul butonului de run, cu ajutorul
butonului attach debug alaturat.
● Virtual Device Manager – se afla de asemenea in bara superioara. Cu ajutorul
acestui buton putem deschide managerul de device-uri, unde putem modifica
device-urile dupa bunul plac.
● Butonul de search – se afla in coltul aplicatiei dreapta-sus si are simbolul unei
lupe. Cu ajutorul acestui buton se poate cauta foarte usor orice functie, fisier,
setare sau orice altceva.
● Sectiunea view-urilor din GUI – se afla in partea dreapta-sus a aplicatiei si
prezinta toate elementele de GUI prezente in view-ul selectat sub forma de
arbore. Aicea trebuie avut grija sa nu se creeze un arbore cu o adancime prea
mare in mod inutil. Cu cat creste adancimea arborelui cu atat scade
performanta aplicatiei.
● Sectiunea de proprietati ale view-ului – se afla in partea dreapta-jos chiar sub
sectiunea de view-uri si prezinta lista de proprietati ale elementului selectat in
lista de mai sus. Tot aicea se pot face modificari ale proprietatilor intr-un mod
simplu si rapid.
1.3.2 Activity
O activitate este un singur lucru concret pe care utilizatorul il poate face la un
moment dat. Aproape toate activitatile au posibilitatea de a interactiona cu
utilizatorul, asa ca ele sunt cele mai potivite pentru a avea grija de fereastra atribuita
cu ajutorul lui setContentView(). Asadar ori ce aplicatie are nevoie de cel putin o
activitate pentru a functiona. Tot in cadrul unei activitati poate fi specificate una sau
mai multe actiuni ale butoanelor din view. Legaturile intre activitate si buton poate fi
facuta fie prin java in interiorul activitati fie prin .xml la creerea butonului dupa cum
se poate observa in exemplul 1.1
Exemplul 1.1
In acest exemplu pentru a face legatura dintre metoda send_Message cu butonul ne
folosim de parametrul onClick din libraria android.
Un alt criteriu foarte important este ciclul de viata al activitati ( Lifecycle ). Ciclul
de viata ne ajuta foarte mult in a stabili ce sa se intample in functie de actiunile
utilizatorului. Toate activitatile sunt tratate automat de sistem sub forma de stack de
activitati. Atunci cand este creata o noua activitate ea este plasata in fata celei de
dinainte si ca ramanea in aceasta pozitie pana la inchiderea sa sau deschiderea
unei noi activitati.
In esenta o activitate poate avea patru stari:
1. Atata timp cat o activitate se afla in prim plan, in partea de sus a stivei, putem
spune ca este activa sau ca ruleaza.
2. In situatia in care o activitate isi pierde focalizarea dar ramane vizibila, din
ceva motiv s-a deschis o alta activitate deasupra iei, activitate ce nu este pe
tot ecranul, sau s-a deschis o activitate transparenta desupra iei, atunci intra
in starea de pauza. O activitate in starea de pauza este functionala,
pastrandu-si toate informatiile si ramane atasat de managerul de ferestre,
totus ea poate fi inchisa de sistem in cazul in care sistemul ramane cu prea
putina memorie.
3. Cand o activitate este ascunsa total de o alta activitate ea intra in starea de
oprit. Ori ce activitate ce se afla in aceasta stare isi pastreaza datele insa in
ori ce moment ce sistemul decide ca are nevoie de memoria respectiva
altundeva activitatea ca fi distrusa si memoria eliberata.
4. In cazul in care activitatea se afla in starea de pauza sau oprit, sistemul poate
distruge activitatea cerandui sa se inchida sau o poate distruge direct. In
aceasta situate la repornire intra in starea de restart, unde aplicatia va incerca
sa restarteze activitatea si sa o restaureze la starea precedenta.
Mai departe vom prezenta diagrama cu cele mai importante etape din viata unei
activitati. In dreptungiuri sunte prezentate functiile de callback ce pot fi implementate
iar in ovale cele patru stari principale.
In diagrama se pot observa trei bucle importante:
1. Intreaga durata de viata a activitati, are loc intre primul apel al functiei
onCreate() pana la apelarea functiei onDestroy(). Activitatea va avea grija sa
seteze toate setarile principale ale activitati in metoda onCreate() si sa le
distruga in metoda onDestroy(). Chiar daca o data cu distrugerea activitati se
elibereaza si toata memoria ocupata de ea tot mai raman lucruri de care
trebuie avut grija, de exemplu da in metoda onCreate() pornim un thread ce
sa se ocupe de descarcarea diferitelor informati de pe internet trebuie avut
grisa sa il si orpim in metoda onDestroy() altfel acel tread va rula la nesfarsit
creand probleme serioase aplicatiei si poate pana sa forteze sistemul sa
inchida aplicatia.
2. Durata de viata vizibila, incepe cu metoda onStart() si se incheie cu apelul
onStop(). In toata aceasta perioada activitatea este vizibila pe ecran, chiar
daca nu este in fata stock-ului si prin urmare este imposibila interactionarea
cu utilizatorul. Intre aceste doua metode se face intretinerea resurselor ce vor
fi afisate utilizatorului. De exemplu in metoda onStart() poate fi inregistrat un
BroadcastReceiver ce sa mentina monitorizarea scimbarilor suferite de UI, iar
in aplelul functiei onStop(), cand activitatea nu mai poate fi vazuta de
utilizator, sa stergem inregistrarea. De mentionat este si faptul ca metodele
onStart() si onStop pot fi apelate de mai multe ori, apeluri provocate de
schimbarea stari activitati din visibil in ascuns.
3. Durata de viata in prim – plan, acest ciclu incepe cu metoda onResume() si se
incheie cu metoda onPause(). In tot acest timp activitatea se afla in prim plan
si poate interactiona cu utilizatorul. Trebuie totus avut grija, fiinda activitatea
poate trece destul de fregvent de la starea de resume la cea de pause. Teci in
aceasta parte codul trebuie sa fie cat mai clar, simplu si usor.
Android pune o lista de metode ce pot fi suprascrise pentru a face actiunile specifice
activitati create de noi. Toate metodele sunt optionale cu exceptia metodei
onCrete(Bundle) ce trebuie suprascrisa pentru a se face setarile initaiale. De altfel cu
ajutorul Bundle-ului putem afla daca metoda a fost creata pentru prima data sau nu.
Daca Bundle-ul este null asta inseamna ca nu a mai fost apelata nici o data iar in
caz contrar il putem folosi sa salvam date intre initializari. De exemplu rotirea
ecranului care cauzeaza distrugerea complecta a activitati desi noi dorim sa pastram
datele la reinitalizarea ei. De mentionat mai este si faptul ca metodele o data
suprascrise ar trebui sa apeleze si functia respectiva din superclasa.
● onCreate(): Metoda este apelata in tot deauna cand activitatea a fost creata,
urmatoarea functie apelata fiind onStart(). In aceasta functie ar trebui factute
toate initializarile initiale cum ar fi creerea de view-uri sau initializarea listelor.
Metoda mai vine si cu un bundle care de regula ii null cu exceptia cazului in
care activitatea a fost ingetata inainte.
● onRestart(): Apelata dupa ce activitatea a fost oprita si pornita din nou. In
aceasta etapa ar trebui restaurate datele sterse cat timp activitatea a fost
oprita. Intot deauna dupa aceasta metoda se apeleaza onStart().
● onStart(): Metoda este apelata in momentul in care activitatea devine vizibila.
Poate fi urmata fie de functia onResume(), in cazul in care activitatea a venit
in prim plan, fie de functa onStop(), caz in care activitatea si-a pierdut
vizibilitatea.
● onResume(): In acest punct activitatea este vizibila si in prim plan iar acuma
urmeaza sa se inceapa interactiunea cu utilizatorul. Urmatoarea metoda
apelata va fi mereu onPause()
● onPause(): Este apelata atunci cand sistemul decide afisarea unei activitati
precedente. In aceasta etapa este de recomandata salvarea tuturor datelor si
starilor despre view-uri precum si oprirea animatiilor sau a altor lucruri ce ar
putea consuma CPU-ul. Trebuie avut grija ca executa aceste metode sa se
execute cat mai rapid, activitatea precedenta nu va fi afisata pana la
executarea completa a acestei metode. Aceasta medota poate fi urmata de
metoda onResume(), daca tot aceasta activitate se intoarce in prim plan, sau
de metoda onStop(), daca metoda devine invizibila utilizatorului.
● onStop(): Aceasta metoda este apelata in momentul in care activitatea nu mai
este vizibila utilizatorului din cauza ca alta activitate este afisata in prim-plan
si o acopera pe aceasta. Acest lucru poate fi provocat fie ca a fost creata o
noua activitate, fie ca una existenta a venit in prim-plan sau chiar si fiinda
aceasta activitate a fost distrusa si nu mai este vizibila. Aceasta metoda poate
fi urmata fie de metoda onResume(), daca activitatea revine in prim plan si isi
incepe interactiunea cu utilizatorul, fie in caz contrar de metoda onDestroy()
● onDestroy(): Aceasta metoda este apelata cu un pic inaitea distrugeri
definitive a activitati. Acest lucru poate fi cauzat fie prin apelarea explicita a
metodei finish() pentru incetarea existentei activitati, fie in mod fortat de catre
sistem atunci cand sistemul decide ca nu mai este nevoie de aceasta
activitate si are nevoie de memorie pentu alte lucruri sau pur si simplu mentru
a salva spatiul. Se poate verifica din care motiv a fost distrusa activitatea cu
ajutorul metodei isFinishing(). Dupa aceasta medoda nu se mai apeleaza nici
o alta, aceasta fiind ultima.
De mentionat este faptul ca sistemul nu distruge activitati in mod aleatoriu ci bazat
pe un flag ce il detine fiecare activitate si spune sistemului daca activitatea poate fi
distrusa sau nu. Metodele care seteaza activitatea ca fiind distructibila sunt: onStop()
si onDistroy(). Iar metodele care seteaza activitatea ca fiind de destructibila sunt:
onCreate(), onRestart(), onStart() si onResume().
Metoda onPause() este mereu apelata chiar inaintea unei metode ce fac activitatea
destructibila, din acest modiv se recomanda salvarea tuturor datelor pentru a putea fi
recuperate in cazul in care sistemul distruge temporar activitatea si o redeschide, ca
utilizatori sa nu experimenteze astefel de probleme. Chiar daca exista si metoda
onSaveInstanceState(Bundle) care desi este creata special pentu a face acest lucru,
nefiind in ciclul de viata al activitati pot exista momente in care sa se seteze starea
de destructibil iar metoda onSaveInstanceState(Bundle) sau nu se apeleze.
In principal activitatea incepe sa fie destructibila incepand cu metoda onPause() si
se incheie cu metoda onResume().
1.4 Designul aplicatiei
Designul aplicatiilor android au inceput sa ajunga tot mai mult la o
standardizare dictata de Google prin limbajul de design dezvoltat in anul 2014
intitulai Material Design. Material design este concentrat pe efectul de fartie reala
tangibila. Toate efectele ,animatiile, umbrele si alte elemente din android sunt in asa
fel realizate in cat sa poata imita cartonase reale si alte obiecte ce pot fi atinse
precum si hartia si cerneala.
Google face progrese mari in promovarea acestui standard, introducand tot felul de
aplicatii secundare pentru facilitarea implementari a material design precum si
creerea librariei v7 appcompact ce permite implementarea si pe dispozitivele cu un
nivel de api mai mic de 21 (Android 5.0) dar totusi dezvoltate dupa anul 2009. O alta
promovare fiind si integrarea limbajului Material Design pe o mare parte a aplicatiilor
dezvoltate de Google ca de exemplu: YouTube, Gmail, Google Maps, Google Drive,
Google Docs, Inbox, Sheets and slides si o mica implicare si in browserele Google
Chorme precum si in Google Keep. Iar o alta fiind integrari a Material Design in
principalele interfate web pentru desktop cum sunt Google Drive, Docs, Sheets,
Slides, si Imbox.
Android pune la dispozitie o serie de elemente pentru a crea aplicati bazate pe
Material Design
● O noua tema
● Noi widget-uri pentru a putea crea view-uri mai complexe
● Noi API-uri pentru dezvoltarea de umbre si animati personificate
1.4.1 Tema Material
Tema material pune la dispozitie un stil nou pentru aplicatie, elemente de sistem ce
iti permit sa iti setezi propria paleta de culori si animati prestabilite pentru
feedback-ul la tingeri precum si animati pentru tranzactia animatiilor.
De asemenea poti sa iti personifici aspectul temei material cu ajutorul paletei de
culori ce o poti controla cu usurinta setandui identitatea brandului propriu. Poti de
altfel sa schimbi tenta de culoare a barei de actiune cat si a barei de status folosind
tema de atibute.
Cu ajutorul elementelor de sistem poti crea noi animati cat si animati la feedback-ului
de atingeri. Poti chiar sa setezi propria paleta de culori pentru animatiile de feedback
al atingerilor si a tranzactiilor de activitati.
Temele material sunt definite in modul urmator:
● @android:style/Theme.Material (dark version)
● @android:style/Theme.Material.Light (light version)
● @android:style/Theme.Material.Light.DarkActionBar
Ca exemplu vom afisa aspectul a daua teme, mai exact tema material intunecata si
cea luminoasa:
1.4.2 Listele si cardurile
Android pune la dispozitie doua metode de a afisa cardurile si listele in stilul material
design incluzand si animatiile aferente:
● RecyclerView este o versiune mai noua si mai conectabila a vechiului
ListView ce aduce o crestere de performanta precum si diferite tipuri de
aspect
● CardView permit afisarea de informati importante in cadrul unor carduri ce au
un aspect mai consistent si dau impresia ca ar putea fi atinse.
In continuare vom prezenta mai pe larg aceste doua elemente.
1.4.2.1 Listele
RecycleView este versiunea mai avansata si flexibila a vechiului ListView. Cu
ajutorul lui se pot afisa cantitati enorme de date ce pot fi scrolate intr-un mod foarte
eficient mentinanduse un numar limitat de viewuri ce sunt refolosite pentru afisarea
diferitelor tipuri de date. Folosirea lui RecycleView este cu atat mai folositoare in
situatiile in care tu ai deja ocolectie de date ce se schimba fregvent la rulare din
cauza actiunilor userului sau a internetului.
Clasa RecycleView simplifica foarte mult afisarea si intretinerea de seturi de date de
mari dimensiuni oferindune un manager de amplasare cu ajutorul pozitiilor
elementelor din lista. Precum si animatiile standarde oferite pentru operatiile comune
ale elementelor, cum a fi scoaterea si adaugarea elementelor din lista.
Pentru folosirea a RecycleView-ului tot ce ai nevoie este specificarea unui manager
de amplasare precum si unui adaptor ce detine setul de date. Adaptoarele pot fi
create destul de simplu tot ce este nevoie este extindere clasei
RecycleView.Adapter. Restul detaliilor de implementare pot diferi destul de mult si
nu exista un anumit standar general valabil. Aceste variati pot aparea din cauza
specificatiilor setului de date precum si din cauza tipului folosit la creerea view-ului.
Scopul managerului de amplasare este acela de a determina pozitiile view-ului in
interiorul recycleView si momentul in care sa se refoloseasca elementele view-ului
ce nu mai sunt vizibile utilizatorului. Pentru a refolosi anumite view-uri, managerul de
amplasare poate cere scimbarea datelor din interiorul unui view cu alte date
procurate din dataset. Acest lucru ii ofera o foarte mare putere managerului de
positionare facandul responsabil de cresterea substantiala a performantelor prin
evitarea de a creea view-uri inutile ce pot incetini foarte mult functia findViewById().
Desi se pot creea managere de positionare personificate extinzand doar clasa
RecyclerView.LayoutManager, totusi RecycleView pune la dispozitie trei manageruri
predefinite:
● LinearLayoutManager – ce are capacitatea de a afisa elementele intr-o lista
orizontala sau verticala cu functia de a scrola intrega lista.
● GridLayoutManager – afiseaza elementele sub forma de grila
● StaggeredGridLayoutManager – afiseaza elementele intr-o grila esantionata
1.4.2.1 Cardurile
CardView-urile au la baza clasa FrameLayout, pe care o si extind, si permit afisarea
informatiilor in carduri ce au un aspect consistent pe toata platforma. CardView-urile
avea diferite caracteristici cum ar fi umbrele si colturile rotunjite.
Setarea umbrei se poate face foarte usor, folosind parametrul
card_view:cardElecation. In versiunile mai noi decat Android 5.0 se face in mod real
simuland cu exactitate si dinamic o ridicare a cardului, iar in versiunile mai vechi
decat Android 5.0 acest lucru trebiuie facut intr-un mod programatic.
Cateva exemple de moduri in care se poate personaliza fiecare CardView ar fi:
● Setarea razei de rotunjire a colturilor cu ajutorul fisierului de view, se poate
face cu ajutorul atributului card_view:cardCornerRadius
● Setarea razei de rotunjire in interiorul codului se poate face ajutorul metodei
CardView.setRadius
● Secarea culori de fundal se poate face folosin atributul
card_view:cardBackgroundColor
Urmatorul cod arata cum sa implementezi un CardView in view-ul tau.
1.4.3 Umbrele
Android pe langa coordonatele x si y mai are si coordonata z, care este un
parametru ce reprezinta adancimea unui view. Tot acest parametru mai determina si
dimensiunea umbrelor, de exemplu un z mai mare determina o umbra mai mare. Dar
tot o data determina si ordinea in care sa fie desenate elementele in view, de
exemplu cu cat parametru z este mai mare cu atat elementul este mai deasupra.
Material designintroduce pentru elementele UI conceptul de nivel. Nivelul unui
element ajuta utilizatori sa inteleaga cat de important este un anumit element si la ce
element sa isi indrepte privirea.
Elementul de nivel este chiar parametrul z care determina aspectul vizual al
umbrelor. Cu cat nivelul este mai mare cu atat creste importanta elementului si
dimensiunea umbrei. Elementele cu nivel mai mare acopera elementele cu nivel mai
mic cu toate aceste nivelul nu afecteaza dimensiunea unui element. Nivelul este de
alfel util in situatiile in care se dorescte creerea unei animati de a ridica view-ul in
momentul unei actiuni, de a ridica view-ul.
Cand vorbim de animati lucrurile se schimba un pic. Formula reala a valori Z este in
felul urmator: Z = elevation + translationZ, in care elevation este valoarea setata de
noi ce ramane statica in timpul animatiilor iar translationZ este o componenta
dinamica din cadrul animatiei.
Pentru a seta parametrul de nivel in definitia unui view se poate folosi atributul
android::elevation, iar daca se doreste sa se faca acest lucru din cod poate fi folosita
metoda View.setElevation(). Pentru a modifica translatia in timpul unei aimati poate fi
folosita metoda View.setTranslationZ().
Se poate folosi si StateListAnimator pentru a specifica aceste animatii intr-un mod
mai declarativ. Acet lucru este foarte util in situariile in care animatia este declansata
de schimbari de stare, cum ar fi apasarea unui buton.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Prin Android se intelege ata o platforma software cat si un sistem de operare [616020] (ID: 616020)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
