Sunteți pe pagina 1din 28

Structura unei aplicații Android

O aplicație Android poate conține mai multe


componente:
Contextul reprezintă punctul central al unei aplicații Android, oferind acces
către mai multe funcționalități ale acesteia (inclusiv la resursele
dispozitivului mobil, serviciile sistemului de operare, diferite fișiere de
configurare); este instanțiat sub forma unui obiect de tip
android.app.Application.

Contextul este utilizat pentru a implementa diferite funcționalități la nivelul întregii


aplicații:
• obținerea de referințe la resursele aplicației (șiruri de caractere, elemente grafice,
fișiere XML);
• accesarea preferințelor aplicației;
• gestiunea sistemului de fișiere corespunzător aplicației;
• lucrul cu resurse necompilate ale aplicației;
• utilizarea serviciilor de sistem;
• folosirea unei baza de date SQLite;
• administrarea permisiunilor aplicației.
Activitatea realizează sarcini a căror execuție nu influențează timpul de
răspuns al aplicației Android, astfel încât să nu aibă un impact asupra
experienței utilizatorului; de aceea, este asociată unei ferestre (interfețe
grafice), o aplicație Android fiind formată din una sau mai multe
activități.

O activitate poate fi utilizată numai dacă este definită în


fișierul AndroidManifest.xml, în cadrul elementului de
tip <application>.
Ciclul de Viață al unei Activități
Fragmentul conține interfața grafică și logica aplicației corespunzătoare unei părți
din cadrul unei activități; motivul pentru care se recurge la modularizarea unei
activități prin intermediul a mai multor fragmente este asigurarea consistenței și
flexibilității aplicației Android pe mai multe echipamente mobile, cu dispozitive de
afișare de dimensiuni și rezoluții diferite.

În Android, un Fragment este o clasă ce reprezintă o


componentă independentă ce se execută în contextul unei
activități.
Serviciul încapsulează procese mai complexe, executate în
fundal (și posibil la intervale de timp regulate) a căror rulare
durează o perioadă de timp semnificativă, astfel încât să nu
poată fi plasate în cadrul aceluiași fir de execuție ca și
interfața grafică prin care se asigură interacțiunea cu
utilizatorul. Intenția este mecanismul
de comunicare între elementele unei aplicații Android
(activități și servicii); prin intermediul unui sistem de
mesagerie (asincronă), sistemul de operare Android mapează
o solicitare (împachetată sub forma unei intenții) către
componenta adecvată.
Resurse
Ce poate conține o activitate?
În cadrul unei aplicații Android, o interfață
grafică conține elemente care au
capabilitatea de a afișa informații către
utilizator, în diferite formate, respectiv de a
interacționa cu acesta, preluând datele
necesare realizării diverselor fluxuri
operaționale din cadrul aplicației.
Clasa android.view.View reprezintă baza pentru
construirea oricărei interfețe grafice dintr-o
aplicație Android. Ea definește o zonă rectangulară
a dispozitivului de afișare (ecran), majoritatea
controalelor grafice și a mecanismelor de
dispunere a conținutului fiind derivate din aceasta.
1. Cele mai multe elemente grafice sunt definite în pachetul android.widget, fiind
implementate controale care implementează cele mai multe dintre funcționalitățile
uzuale (etichete, câmpuri text, controale pentru redarea de conținut multimedia -
imagini, filme -, butoane, elemente pentru gestiunea datei calendaristice și a timpului).

2. Controalele pentru gestiunea mecanismului de dispunere a conținutului au rolul


de a determina modul în care sunt afișate elementele conținute. Acestea sunt
derivate din clasa android.view.ViewGroup, definind mai multe reguli prin care se
determină poziția la care vor fi plasate componentele pe care le includ.
Mecanisme pentru construirea unei interfețe grafice
O interfață grafică poate fi construită în două moduri:

prin definirea elementelor componente și programatic, prin instanțierea unor obiecte


a modului lor de dispunere în cadrul unui de tipul elementelor componente direct în
fișier .xml, asociat fiecărei activități (sau codul sursă (cu stabilirea proprietăților
fragment) în parte, situație adecvată respective) al activității (sau fragmentului),
cazurilor în care interfața grafică este abordare potrivită pentru situațiile în care
statică; interfața grafică are o structură dinamică
(este actualizată în funcție de unele
condiții specifice identificate în momentul
execuției).
Controale de tip text

1. Controlul de tip TextView este utilizat pentru afișarea unui text către
utilizator, fără ca acesta să aibă posibilitatea de a-l modifica. Conținutul pe
care îl afișează un obiect TextView este indicat de proprietatea text.

2. EditText este o componentă utilizată pentru obținerea unui text de la


utilizator. Implementarea sa pornește de la obiectul de tip TextView, astfel
încât sunt moștenite toate proprietățile sale.
Controale de tip buton

1. O componentă de tip button ce are atașat un text este definită de clasa android.widget. Button, fiind
caracterizată prin proprietatea text, ce conține mesajul pe care acesta îl va afișa.

2. Un obiect de tip ImageButton (definit de clasa android.widget.ImageButton) este utilizat pentru afişarea
unei imagini, specificată în fişierul XML prin proprietatea android:src sau programatic prin intermediul
metodei setImageResource().

3. Un obiect ToggleButton (definit de android.widget.ToggleButton) este un tip de buton care are asociată o
stare cu două valori (selectat și neselectat), asemenea unui checkbox sau radiobutton. Implicit, atunci
când este selectat, acesta afișează o bară de culoare albastră în partea sa inferioară, iar atunci când nu
este selectat, o bară de culoare gri.
Controale de tip buton

1. Controlul de tip CheckBox (din clasa android.widget.CheckBox) este tot un element de tip buton ce poate
avea două stări (selectat și neselectat), accesibile prin intermediul proprietății checked (android:checked
în fișierul XML și setChecked() sau toggle() în codul sursă).

2. Controlul de tip Switch (din clasa android.widget.Switch), introdus începând cu nivelul de API 14, este tot
un element de tip buton ce poate avea două stări (selectat și neselectat), având forma unei bare
derulante prin care se poate realiza tranziția între cele două valori, aflate la capetele acesteia.

3. Un element de tip android.widget.RadioButton este tot un buton cu două stări (selectat / neselectat), de
obicei utilizat pentru selecția unei singure opțiuni dintr-o listă, excluderea mutuală fiind realizată prin
includerea mai multor obiecte de acest tip într-o componentă de tip android.widget.RadioGropup. Un
obiect de tip RadioButton se poate afla și în afara unui grup la fel cum un obiect de tip RadioGroup poate
conține și alte controale decât butoane.
Controale de tip multimedia

1. Controlul de tip ImageView este utilizat pentru afișarea unei imagini.

2. Controlul de tip VideoView este utilizat pentru redarea de conținut video, într-unul din formatele
H.263, H.264 AVC, MPEG-4 SP sau VP8.
Controale pentru gestiunea datei calendaristice și
a timpului

1. Obiectul de tip DatePicker este folosit pentru gestiunea componentelor unei date calendaristice (zi, lună,
an).

2. Obiectul de tip TimePicker este folosit pentru gestiunea componentelor timpului (oră, minut).

3. Obiectul de tip AnalogClock este folosit pentru afișarea timpului curent, folosind un ceas analogic.
Utilizatorul nu poate interacționa cu un astfel de control, actualizarea conținutului său fiind realizată în
mod automat, la fiecare minut.

4. Obiectul de tip DigitalClock este folosit pentru afișarea timpului curent, folosind un ceas digital. Este un
control de tip TextView de la care moștenește toate funcționalitățile. Utilizatorul nu poate interacționa cu
un astfel de control, actualizarea conținutului său fiind realizată în mod automat, la fiecare secundă.
Controale pentru gestiunea datei calendaristice și
a timpului

1. Obiectul de tip TextClock este folosit pentru afișarea datei calendaristice și/sau a timpului curent
(folosind formatul 12/24 ore și permițând schimbarea zonei de timp). Implicit, acest control nu
afișează și secundele.

2. Un obiect de tip Chronometer este utilizat pentru monitorizarea timpului scurs începând de la un
anumit moment, pentru activitățile în care un astfel de element este esențial.
Controale pentru monitorizarea progresului

Obiectul de tip ProgressBar are mai multe forme:


1. un indicator circular animat, care nu oferă nici un fel
de informații cu privire la procentul de completitudine al
procesului realizat în fundal (util mai ales pentru operații
a căror lungime nu poate fi determinată); stilurile care
pot fi folosite pentru acest tip de bară de progress sunt
progressBarStyleLarge și progressBarStyleSmall,
animația fiind realizată în mod automat;
2. o bară de progres orizontală care indică și măsura în
care sarcina din fundal a fost realizată (poate fi însoțită
și de o altă bară de progres orizontală care indică starea
unui proces imbricat); stilul folosit în acest caz este
progressBarStyleHorizontal, suportând proprietăți cum
ar fi progress (valoarea curentă), respectiv min / max.
Controale pentru monitorizarea progresului

1. În situația în care se dorește să se ofere utilizatorului posibilitatea de a controla progresul unei


anumite operații, se folosește un obiect de tip SeekBar, care are în plus un selector a cărui locație
poate fi modificată manual prin interfața grafică, la orice poziție cuprinsă între 0 și valoarea
indicată de proprietatea max.
Alte Tipuri de Controale Grafice

1. Un obiect de tip NumberPicker este folosit


pentru a alege o valoare dintr-un interval
definit de proprietățile min și max.

2. Un obiect de tip RatingBar este utilizat


pentru a gestiona calificative, exprimate
sub formă de număr de stele.
Mecanisme pentru dispunerea controalelor
(layout)

1. În cadrul unui grup de tip LinearLayout,


componentele sunt dispuse fie pe
orizontală, fie pe verticală, în funcție de
proprietatea orientation (putând lua valorile
horizontal - implicită sau vertical).
Mecanisme pentru dispunerea controalelor
(layout)

1. În cadrul unui grup de tip RelativeLayout,


componentele pot fi dispuse relativ.
2. Într-un mecanism de poziționare de tip TableLayout,
elementele componente (layout-uri sau widget-uri)
sunt plasate în cadrul unui tabel, fără ca marginile să
fie afișate și fără a se specifica în mod explicit
numărul de rânduri sau de coloane, acestea fiind
determinate în mod automat (numărul de rânduri este
determinat ca sumă a elementelor de tip TableRow,
iar numărul de coloane ca maximul numărului de
componente de pe o linie; de asemenea, dimensiunea
unei coloane este dată de componenta cea mai
voluminoasă afișată în cadrul ei).
Mecanisme pentru dispunerea controalelor
(layout)

1. Layout-ul de tip GridLayout este utilizat tot


pentru dispunerea componentelor într-un
format tabelar, folosind însă o sintaxă mult
mai flexibilă.
Unități de măsură

dp - pixel independent de rezoluție - se recomandă să se utilizeze această unitate de măsură în


momentul în care se specifică dimensiunea unui control în cadrul unui container. Se asigură astfel
faptul că se utilizează o proporție adecvată pentru un control, indiferent de rezoluția ecranului,
Android scalându-i dimensiunea automat.

sp - pixel independent de scală, echivalent cu dp – se recomandă să se utilizeze această unitate de


măsură în momentul în care se specifică dimensiunea unui set de caractere, cu care va fi afișat un
text.

pt - punct, echivalent cu 1/72 inch, bazat pe dimensiunile ecranului.

px - pixel, corespunzător unui pixel al dispozitivului mobil.

S-ar putea să vă placă și