Ambient Mood Aplicatie Android
Capitolul 1. Introducere
Stresul
Stresul a devenit o problemă de neevitat in ultimele două decenii. Acesta afectează oameni indiferent de vîrstă și entie, nivelul de stres fiind ridicat iar mecanismele prin care se încearcă să i se facă fața se dovedesc ineficiente, perpetuând un stil de viață nesănătos și comportamente nesănătoase pentru generațiile viitoare.
Definiția stresului:
Stresul este definit ca răspunsul total al organismului la presiunile supuse de către mediul exterior. Când stresul a fost studiat pentru prima dată în anii 1950, termenul a fost folosit pentru a desemna atât cauzele cât și efectele suferite datorită acestor presiuni. Unul dezacord în rândul cercetătorilor îl reprezintă definiția stresului la om. Este în primul rând un răspuns extern care poate fi măsurat prin schimbari in secrețiile glandulare, reacții cutanate, și alte funcții fizice, sau este o interpretare internă sau reacție la un factor de stres; sau ambele?
Tipuri de stres:
Tratarea stresului poate fi o sarcină complicate și confuză, deoarece există diferite tipuri de stres – stres acut, stres episodic acut, și de stres cronic – fiecare cu propriile caracteristici, simptome, durata si tratamente cu abordări diferite.
Stresul acut
Stresul acut este cea mai comună formă de stres. Ea vine de la cerințele și presiunile din trecutul recent și cerințele anticipate și presiunile din viitorul apropiat. Stresul acut este palpitant și interesant în doze mici, dar prea mult este obositoar. O coborîre în jos o pârtia de schi, de exemplu, este antrenantă în prima parte a zilei. În același zi, mai târziu este taxantă și obositoare. Schierea dincolo de limitele tale poate duce la căderi și oase rupte. Astfel, stresul pe termen scurt poate duce la stres psihologic, dureri de cap, stomac deranjat și alte simptome.
Din fericire, simptomele de stres acut sunt recunoscute de majoritatea oamenilor. Pentru că este pe termen scurt, stresul acut nu are suficient timp pentru a face pagube importante.
Cele mai frecvente simptome sunt:
Problemele emoționale – o combinație de furie sau iritabilitate, anxietate și depresie, cele trei emoțiile de stres.
Probleme musculare, inclusiv dureri de cap tensiune, dureri de spate, dureri de maxilar si tensiunile musculare care duc la întinderi muculare și de tendoane și probleme cu ligamentele.
Probleme cu stomacul, probleme ale intestinului, cum ar fi arsurile la stomac, acid gastric.
Stresul acut duce la creșterea tensiunii arteriale, bătăi rapide ale inimii, palme transpirate, palpitații, amețeli, migrene, mâini sau picioare reci, dificultați
respiratorii si dureri toracice, insomnie.
Stresul acut se poate ivi în viata oricui,dar este ușor de tratat si gestionat.
Stresul episodic acut
Exista însă oameni care suferă de stres acut frecvent, ale căror vieți sunt extrem de dezordonate. Aceștia sunt mereu grăbiți, întotdeauna în întârziere, se găsesc mereu într-o agitație continuă. De multe ori, ei se descriu ca având multă energie. Întotdeauna grabite, ele tind să fie iritabilile, tinzând spre ostilitate. Relațiile interpersonale se deteriorează rapid atunci când alții răspund cu ostilitate reală. Locul de muncă devine un loc foarte stresant pentru ei.
O altă formă de stres episodic acut vine din grija neîncetată pentru orice, cei care sufera de acest tip de stres episodic acut fiind pesimiști, tensionați, dar sunt mai mult depresivi decât furioși și ostili.
Cele mai frecvente simptome:
Migrene
Hipertensiune
Boli cardio-vasculare
De multe ori, stilul de viață și problemele de personalitate sunt atât de înrădăcinate și obișnuite încât persoane nu văd nimic în neregulă cu felul în care trăiesc viața. Ei dau vina pe alți oameni pentru problemele lor și pe evenimente externe. Frecvent, ei văd stilul lor de viață, modelele lor de a interacționa cu ceilalți, și modul lor de a percepe lumea ca parte integrantă a cine si ce sunt.
Cei care sufera de stres episodic acut de pot împotrivi cu înverșunare la schimbare. Doar promisiunea de scutire de la durere si disconfort din simptomele lor le convinge sa urmeze tratament și să respecte programul de recuperare.
Stresul cronic
În timp ce stres acut poate fi palpitant în doze mici, stresul cronic nu este. Aceasta este stresul care măcină oamenii zi de zi, an după an. Stres cronic distruge organele, mințile și viețile. Face ravagii prin uzură pe termen lung. Este stresul provocat de sărăcie, de o viață de familie nefericită, de a fi prins într-un mariaj nefericit sau într-un loc de munca disprețuit.
Stresul cronic apare atunci când o persoana nu vede nici o cale de ieșire dintr-o situație deprimantă. Stres cronic ucide prin sinucidere, violenta, infarct miocardic, accident vascular cerebral si, probabil, chiar cancer.
Deoarece resursele fizice și psihice sunt epuizate prin uzură pe termen lung, simptomele de stres cronic sunt dificil de tratat și pot necesita tratament medical, precum și tratament comportamental extins și de management al stresului.
Motivația
Stresul stă la baza multor afecțiuni și probleme de sănătate. Acesta se regăseste in viața de zi cu zi la un procentaj mare de populație. Un studiu prin chestionare făcut de către asociația Stress in America™ pe parcursul a șase ani (2007 – 2009) arată nivelul de stres resimțit de către persone din mai multe categorii de vîrsta și anume:
Persoane cu vîrsta cuprinsă între 18 și 33 de ani (Millennials)
Persoane cu vîrsta cuprinsă între 34 și 47 de ani (GenX)
Persoane cu vîrsta cuprinsă între 48 și 66 de ani(Boomers)
Persoane cu vîrsta mai mare de 67 de ani(Matures)
Cele mai mari nivele de stres au fost raportate de către primele două categorii ( 18 – 33 ani respectiv 34 – 47 ani) dar si ultimele două ( 48 – 66 ani respectiv 67+ ani) au raportat nivele mai mari de stres decât nivelul normal.
Atât prima cât și cea de-a doua categorie au raportat o medie a nivelului de stress de 5.4 puncte pe o scara de la 1 la 10, mai mare decât media nivelului raportat de câtre cea de-a treia categorie de 4.7 puncte si categoria a 4-a cu o medie de 3.7 puncte.
Toate generațiile afirma ca suferă de un nivel de stress mai mare decât cel normal, persoanele cu varsta mai mare de 67 de ani fiind cele mai puțin afectate de stres.
Aceste informatii sunt prezentate in Fig 1.1.
Fig. 1.1 Grafic reprezentând media nivelului de stres pe categorii de vîrstă.
Stresul nu este un fenomen existent numai în America, el se regăseste in majoritatea țărilor și este în creștere. În formele sale cele mai grave, stresul trebuie tratat de către specialiști. Formele mai puțin grave cum este stresul acut nu necesită consultarea unui specialist, iar simptomele pot fi ameliorate prin altfel de metode decât cele medicale.
Unule dintre simptomele des întâlnite asociate cu stresul sunt insomnia și hipertensiunea. Una dintre metodele prin care se pot ameliora aceste simptome o reprezintă muzica ambientală. Aplicația “Ambient Mood” este o aplicație care ajută utilizatorul sa elimine o parte din stresul acumulat, să se relaxeze și sa se poată bucura de un moment de liniște.
Tema proiectului
În realizarea aplicației “Ambient Mood” s-a urmărit crearea unei aplicații ce permite accesul la o colecție de melodii de tip “white noise”, sunete de fundal liniștitoare, ce ajuta utilizatorul să se relaxeze și sa se bucure de un moment de calm.
Aplicația “Ambient Mood” oferă următoarele funcționalități:
Folosirea aplicației se face în permanență, indiferent de starea și stadiul său, fără a necesita conexiune la Internet, poate funcționa deci în orice locație fără costuri;
Utilizatorul are la dispoziție o selecție de sunete pe care le poate asculta;
Din selecția de sunete disponibile, utilizatorul își poate crea un nou playlist care să conțină o combinație între doua dintre sunete;
Capitolul 2. State-of-the-art
2.1 Resurse
Pentru a afla mai multe despre cauzele stresului, dar și cum ne afectează acesta, am recurs la studierea unor articole in care acestă notiune este prezentată în mod acesibil și inteligibil, fără a fi necesare cunoștiințe de specialitate.Acestea m-au ajutat sa înțeleg care sunt cauzele apariției stresului dar și care sunt posibilele remedii pentru acesta. Resursele utilizate sunt:
”Undoing Perpetual Stress: The Missing Connection Between Depression, Anxiety and 21st Century Illness” de Richard O’Connor – psihoterapeutul Richard O'Connor explică modul in care multe probleme comune, atât emotionale si fizice, sunt de fapt efecte secundare ale vieții moderne, și cum putem reversa efectul lor. El explică cum cititorii pot să recunoască efectele ascunse ale stresului asupra creierului și corpului. Cum pot să dezvolte un auto-control asupra modului de a gândi, acționa și simți atunci când sunt stresați și cum să redobândească un sens și scop în viață.
”The 10 Best-Ever Anxiety Management Techniques” de Margaret Wehrenberg – făcând referire la simptomele fizice, emoționale și comportamentale, Margarte Wehrenberg , clinician de sănătate mentală, evidențieaza cele mai bune sfaturi pentru a învinge anxietatea, de la tehnici de respirație până la discuții cu sine.
”The Worry cure ” de Robert L. Leahy – destinat persoanelor care obișnuiesc să își facă griji neîntemeiate în legatură cu tot ce se întâmplă în jurul lor. Această lucrare prezintă un ghid accesibil, de auto-ajutor, pentru a obține controlul asupra anxietății. Leahy este un expert în schimbarea proceselelor de gândire, ajutând-i pe cei care suferă de aceste probleme să
avanseze pas cu pas, furnizându-le indicii cu privire la modul de a își schimba modul de a gândi.
2.2 Aplicații asemănătoare
Piața aplicațiilor Android a explodat in ultimii câțiva ani odata cu apariția de noi tehnologii și dispozitive care suporta care suporta sistemul de operare Android. Numărul de utilizatori și de aplicații au crescut și ele odata cu numărul dispozitivelor de pe piață. Astfel, există câteva aplicații similare acesibile de o mare varietate de utilizatori, facil de utilizat. Printre cele mai cunoscute aplicații asemănătoare se numără:
Lightning bug
Lighting bug oferă sunete de relaxare din natură, care ajută utilizatorul să aibă parte de un somn mai liniștit și mai profund.În versiunea originală ea a fost stocată pe cardul SD al dispozitivului, ca mai apoi sa fie mutată in folderul app storage de pe cardul SD, pentru a se evita conflictele cu antivirusul instalat pe dispozitiv.
Sleep Fan
Această aplicație generează sunetul unui ventilator, care ajută mulți utilizatorii să aibă un somn mai profund. Puteți reda un sunet de ventilator la viteză redusă, medie sau mare și de asemenea, se poate seta timpul cât utilizatorul doreste ca sunetul să fie redat.Permite telefonului să intre în modul de repaus, fiind activa în fundal.
Chroma Doze
Această aplicație Android generează zgomot alb pe baza unui algoritm care poate fi controlat. Aplicația rulează de asemenea pe fundal.
TaoMix
Taomix este o aplicație cu design minimalis și interfață intuitivă, ce ajută utilizatorii sa uite de lumea înconjurătoare și să se bucure de un moment de relaxare.
2.3 Direcții în dezvoltarea aplicațiilor Android cu sunete ambientale
Secolul douăzeci prezintă o derivă în muzică de la compozitorii la non-muzicieni, de la reguli stricte în muzică la nerespectarea a nicio regulă. Minimalismul, era rock si muzica Tehno sunt sprijinite de către dezvoltarea sunetului ambiental, autorul celei mai mari descoperiri în muzica din ultimii o sută ani. Ajutat de electronica, noi idei și consumul de masă, sunetul ambiental s-a impus incontestabil ca "muzica clasică a viitorului", afirmă Mark Prendergast.
Acest lucru, împreună cu noile tehnologii apărute și cu dezvoltarea platformei Android,combinate cu ritmul de viață alert au făcut ca aplicațiile ce utilizeză sunete ambientale să devină tot mai cunoscute și mai apreciate de către utilizatori.
Majoritatea aplicațiilor aflate actual pe piață utilizează stocarea informațiilor local, ceea ce duce la un număr limitat de acțiuni la care utilizatorul are acces în interiorul aplicației. Tot din acest motiv, cel mai adesea, numărul de sunete ce pot fi redate este limitat. Acele aplicații care oferă o selecție mai mare de sunete au nevoie de conexiune la internet, dezavantajele majore fiind acelea că nu toate sunetele pot fi stocate local iar majoritatea aplicațiilor de acest gen sunt costisitoare.
De la sunete noi disponibile în fiecare zi până la interfețe din ce în ce mai atractive și sofisticate, aceste aplicații sunt într-o continuă dezvoltare. Diversificarea acțiunilor permise utilizatorilor este o facilitate diversificată în fiecare moment.
Dat fiind faptul că aplicațiile mobile cu sunete ambientale se află intr-o perioadă de ascendență și atrag din ce în ce mai mulți consumatori, se așteaptă ca pe viitor numărul de utilizatori să fie in creștere, iar aplicațiile din această categorie să ofere posibilități cât mai diverse și mai complexe, care in momentul de față se regăsesc doar la stadiul de idei.
Capitolul 3. Specificațiile Proiectului
3.1 Unelte Folosite
În dezvoltarea aplicatiei Android “Ambient Mood” au fost utilizate următoarele unelte:
Mediul de dezvoltare Eclipse
Framework-ul de dezvoltare al aplicațiilor Android
Mediul de dezvoltare Eclipse:
Eclipse este un mediu de dezvoltare integrat (IDE) folosit pentru realizarea proiectelor software. Acesta include un “workspace” de baza si un sistem extensibil de “plug-in” responsabil de personalizarea mediului de lucru.
Eclipse își are începutul în 2001, când IBM a donat trei milioane de linii de cod din uneltele sale Java. Scopul inițial al Eclipse a fost de a crea și promova o comunitate open source IDE care ar completa comunitatea care înconjoară Apache. Zvonurile spun că un obiectiv secundar a fost de a "eclipsa Microsoft Visual Studio", care este modul în care platforma a primit numele său. Deși Platforma Eclipse este scrisă în Java, acesta permite dezvoltatorilor să dezvolte și codul de testare scrise în alte limbi, datorită sistemului său de unelte numite plug-inuri care personalizează spatial de lucru.
Eclipse SDK (Software Development Kit) este un software public, gratuit, al cărui cod sursă face parte din domeniul public, este un instrument de dezvoltare destinat dexvoltatorilor Java. Proiectul a pornit în anul 2004 și de atunci au existat o serie de variante amintind dintre acestea Europa, Indigo, Juno, Kepler, etc.
Eclipse SDK include instrumente de dezvoltare Eclipse Java (JDT), oferind un IDE cu un compilator Java incremental încorporat și un model complet de fișiere sursă Java. Acest lucru permite tehnici de refactorizare și analiză de cod avansate. IDE utilizează de asemenea un spațiu de lucru, în acest caz, un set de metadate într-o spațiu de fișier plat care permite modificări de fișiere externe, atât timp cât "resursa" spațiului de lucru corespunzător este reîmprospătată după aceea.
Datorită arhitecturii bazate pe extensiile „plug-in”, funcționalitatea sa poate fi extinsă și la alte limbaje de programare cum ar fi: C, C++, JavaScropt, Perl, PHP, Pyton. Astfel au apărut și extensiile pentru dezvoltarea de aplicații Android.
Instrumentele de Dezvoltare Android (ADT) reprezintă un plugin prevăzut de Google pentru Eclipse IDE care este proiectat pentru a oferi un mediu integrat pentru a construi aplicații Android. ADT extinde capacitățile Eclipse pentru a permite dezvoltatorilor crearea de noi proiecte Android, crearea unei interfețe utilizator, adăugarea de pachete bazate pe framework-ul API al Android, depanarea aplicațiilor lor folosind instrumentele SDK Android, și exportarea fișierelor cu extensia .apk pentru a putea distribui aplicațiile create. Plug-inul ADT se descacă gratuit. Acesta a fost IDE-ul oficial pentru Android, dar a fost înlocuit cu Android Studio. Pe lângă codul de bază scris in procesul de dezvoltare a unei aplicații Android se adauga si crearea de fișire de configurare XML utilizate la editarea elementelor din structura aplicației (editări de text, elemente de grafică, așezare în pagină).
Câteva din uneltele integrate în ADT sunt :
Traceview – permite vizualizarea execuției codului programului, util pentru depanare.
Android – permite accesul la managerul Android SDK si AVD Manager alături de librăriile importante pentru realizarea aplicațiilor.
Hierarchy Viewer – oferă posibilitatea de a vizualiza ierarhiile din view-urile aplicației pentru a depista anumite probleme de design.
DDMS – utilizat pentru depanarea aplicației, încluzând facilități precum captura de ecran, emularea aplicației, vizualizarea firelor de execuție și starea memoriei.
Pixel Perfect – se foloseste pentru design-ul aplicatiei deoarece permite examinarea in detaliu a interfetei acesteia.
Managerul Android Virtual Device Manager (AVD) oferă o interfață grafică în care se poat crea și gestiona dispozitive Android Virtual (AVDS), care îi sunt necesare emulatorului Android. SDK-ul include un emulator – un dispozitiv mobil virtual care rulează pe calculator. Emulator permite dezvoltarea și să testarea aplicatiilor Android fără a utiliza un dispozitiv fizic.
Fig. 3.1 Exemplu de emulator Android.
Framework-ul de dezvoltare al aplicațiilor Android
În acest moment, sistemele Android sunt cele mai răspândite la ora actuală pe plan global, după cum arată și studiul făcut de către International Data Corporation. Numărul acestora a crescut în ultimii ani, depășind detașat celelalte sisteme de operare în domeniul sistemelor de operare mobile. Aceste sisteme sunt fiabile si se pretează la o mulțime de configurații hardware variate, adăugându-se și faptul că numărul de companii producătoare de dispozitive mobile ce folosesc sisteme de operare Android este foarte mare, amintind aici Google, Samsung, HTC, LG, Motorola, Acer, ASUS, Allview, Sony, Huawei și multe altele.
Dacă în anul 2012 sistemul de operare Android a depășit celelalte sisteme de operare mobile, cu o cotă de 59.2% din totalul de vânzări, în anul 2015 acesta domină piața cu 78.0%.
În primul sfert al acestui an s-au vândut cu 16% mai multe telefoane inteligente decât în aceeași perioada a anului trecut. Samsung a contribuit cel mai mult la totalul de vânzări, având un portofoliu larg de produse și axându-se pe produsele din gama de mijloc.
Fig. 3.2 Graficul reprezentînd vânzările din anul 2012 pana in primul sfert al anului 2015
Tabelul 3.3 Tabelul reprezintă vânzările în procente în primul spert de an a anilor 2012 – 2015
Un alt motiv pentru care sistemele de operare Android, precum și aplicațiile dezvoltate pe acest framework sunt foarte populare și au așa un succes mare pe piață este ușurința cu care ele pot fi programate. Google pune la dispoziția oricărui programator dornic sa realizeze o aplicație Android, toate uneltele de care are nevoie, mediul de dezvoltare, documentația necesară, drivere specifice fiecărui dispozitiv în parte, pentru a putea fi încărcată si testată aplicația, iar in lipsa unui astfel de dispozitiv, oferă un emulator configurabil pentru testarea proiectelor.
Framework-ul oferă dezvoltatorilor Android, posibilitatea de a accesa aplicațiile de bază ale sistemelui de operare, pentru a le putea refolosi așa cum doresc in aplicația nou creată. Acest mecanism a fost creat pentru a simplifica reutilizarea componentelor. De asemenea, componentele pot fi accesate și de alte aplicații, oferind posibilitatea de a crea aplicații foarte complexe.
Funcționarea unei aplicații Android se bazează pe un set de biblioteci care oferă majoritatea funcționalitățiilor oferite si de bibliotecile de bază a limbajului de programare Java.
Aplicațiile Android folosesc un kernel de Linux, care reprezintă și un strat de abstractizare între hardware si restul software-ului. Kernelul gestionează memoria, precum si securitatea, comunicarea cu rețelele și driverele.
O aplicație Android este formată din activități(Activities). O activitate are rolul de a crea interfațarea cu utilizatorul. Clasa Activity este o clasă predefinită în Android și fiecare aplicație care are interfața cu utilizatorul trebuie să o moștenească pentru a putea deschide o nouă fereastră. În majoritatea aplicațiilor exista o activitate principală, de bază (“main”), denumită in general “MainActivity.java”, aceasta reprezentând prima fereastră a aplicației, adică fereastra care se deschide la lansarea aplicației. Fiecare activitate poate declanșa pornirea unei noi activitați, iar de fiecare dată când începe o activitate nouă, activitatea anterioară este oprită, dar păstrată de către sistem într-o stivă bazată pe mecanismul “last in, first out”.
Operațiile de bază care se realizează în interiorul unei activitați sunt reprezentate prin următoarele metode :
onCreate(Bundle) – reprezintă o metoda folosită pentru inițializarea activității.
setContent(View) – este o metodă prin care se face legătura dintre activitate si fișierul .xml responsabil de editarea respectivei activități.
findViewById(R.id.idExample) – este metoda folosită pentru a indica elementul cu id-ul precizat, din fișierul .xml, care urmează a fi editat
startActivity(Intent) – metoda utilizată pentru a realiza trecerea din activitatea curentă la o noua activitate identificată printr-un nou obiect de tipul Intent.
Orice element de tip activitate are un corespondent în fișierul de configurare AndroidManifest.xml, sub forma unei perechi <activity> , </activity>.
Fișierul AndroidManifest.xml este un fișier de configurare prezent in toate aplicațiile Android.acest fișier are un rol important deoarece face legătura între elementul Android, spre exemplu un Actvitity și clasa din proiect în care este implementată. Cele mai importante elemente configurabile ar fi, numele pachetelor (sau a pachetului) cu codul sursa al aplicației care deservește ca un identificator unic al proiectului.
Acest fișier descrie atât componentele aplicației cât și furnizoii de conținut (ContentProviders) și receptoarele de broadcast (BroadcastReceivers). Pentru fiecare activitate in parte se poate specifica în acest fișier se poate specifica numele activității, prin intermediul unui nou element al fișierului de configurare Strings.xml.
Din punct de vedere al design-ului grafic al fiecărei ferestre de activități, posibilitățile de configurare sunt nenumărate. Fiecărei clase de tip Activity i se atașează un fișier de configurare XML, numit Layout care se setează la inițializarea activității. Această inițializare se face în funcția onCreate(), nelipsită fiecărei clase, care se cheamă de fiecare dată cand acest Activity este invocat, fie prin apel de creare a unui Intent dintr-o altă activitate, fie atunci când este părintele unei alte ferestre și se face revenirea din copil la părinte. În această funcție se leagă fișierul de configurare de Activity prin intermediul apelului setContentView(View), unde View reprezintă numele fișierului XML de configurare.
Un Layout se definește ca fiind o structură vizuală pentru o interfață cu un utilizator (User Interface) folosită pentru o activitate sau widget.Layout-ul poate fi declarat în două feluri:
Declararea elementelor pentru o interfață cu utilizatorul în XML – Android oferă un vocabular XML simplu care corespunde claselor și subclaselor View, cum ar fi cele pentru widget-uri și layout-uri.
Instanțierea elementelor layout la runtime – în cazuri special alese de către programator.
Avantajul declarării în XML este Acela că permite un separare mai bună a prezentării aplicației de codul care controlează comportamentul.
Pentru a crea un fișier de configurare XML utilizabil ca Layout pentru o activitate, trebuie respectate aceleași reguli ca și pentru o pagină web, și anume ca fiecare element vizual să fie încadrat în pagină, iar in interiorul respectivului element să existe ordonate o serie de alte elemente mai mici, putând exista oricâte straturi de elemente.
Fiecare fișier layout trebuie să conțină un element rădăcină, care trebuie să fie un obiect de tip View sau ViewGroup. După ce este definit elementul rădăcină, se pot adăuga obiecte suplimentare layout sau widget-uri ca elemente copil pentru a construi treptat o ierarhie View care definește layout-ul. De exemplu, aici este un layout XML care utilizează un LinearLayout vertical pentru un TextView și un buton:
Fig. 3.4 Exemplu de fișier de configurare LinearLayout
Rădăcina trebuie să fie un singur element, de exemplu un LinearLayout, care la rândul său poate conține oricâte alte elemente. Fișierul, după ce este creat, trebuie salvat cu extensia .xml și va fi adăugat în proiectul Android în interiorul folderului res/layout.
Principalele categorii de Layout sunt următoarele:
Linear Layout
Relative Layout
Web View
List View, Grid View: Layout-uri realizate printr-un adaptor
Fig. 3.5 Layout-urile de bază ale unui fișier de configurare Android
Un Linear Layout este unul din principalele elemente de design ale unei aplicații Android. Acest Layout își aranjează copii într-un singur șir sau într-o singură coloană. Direcția acestui șir poate fi setată prin folosirea funcției setOrientation(int orientation), unde orientation poate fi HORIZONTAL sau VERTICAL. De asemenea se poate specifica și gravitația (Gravity) care specifică aliniamentul tuturor copiilor utilizând funcția setGravity(int gravity), unde gravity poate lua următoarele valori CENTER, FILL, LEFT, RIGHT, START, TOP, BOTTOM, NO_GRAVITY și altele. Orientarea implicită este cea orizontală.
Alături de numele elementului în fișierul de configurare XML, se pot oferi o serie de atribute, proprietăți ale Linear Layout-ului și apar sub următoarea formă :
<LinearLayout
android:property1=”value”
…
android:propertyN=”valueN” >
</LinearLayout>
Unele proprietăți importante ale unul Layout sunt:
android:layout_width – care setează lățimea elementului.Valoarea sa poate fi “fill_parent”, care dimensionează elementul la lățimea totală a ecranului dispozitivului pe care este instalată aplicația;
android:layout_height – care setează înălțimea elementului. Valorile pe care acest câmp le poate lua sunt identice cu cele de la layout_width.
android:background – setează fundalul elementului. Prin fundal se înțelege imaginea sau culoarea care va apărea în spatele elementului. În cazul în care Layout-ul este și rădăcină, acesta va fi fundalul întregii ferestre. Valoarea pe care o poate lua această proprietate este destinația fotografiei utilizată ca fundal, de obicei ele sunt salvate în folderul de resurse numit „drawable” și de aceea calea implicită spre fotografii, deci și valoarea pe care o ia această proprietate este “@drawable/image”, unde “image” este numele imaginii, fără a fi necesară extensia .jpgsau alte extensii. În cazul în care se doreste ca fundalul sa fie reprezentat printr-o singura culoare atunci culoarea va fi declarata folosind coldul RGB, de exemplu android:textColor="#000", sau prin specificarea directa a culorii in cazul in care aceasta este una de baza.
android:id – setează identificatorul unic al elementului în aplicație, ID. Se recomandă pentru a evita pericolul de a avea dubluri, utilizarea ID-ului numai în cazuri în care se dorește modificarea proprietăților unui element prin intermediul codului propriu zis. Valoarea pe care o ia acest câmp este în felul următor “@+id/currentID”. Atunci când se dorește folosirea în cod a acestui element, se utilizează funcția findViewByID(int id), care caută după identificator și preia într-o variabilă locală view-ul căutat, spre exemplu dacă elementul căutat este un Linear Layout avem următoarea structură care îi poate modifica proprietățile:
LinearLayout localLayout=(LinearLayout)findViewById(R.id.layout_id);
android:orientation – setează orientarea layout-ului fie orizontal, fie vertical, modificând poziționarea elementelor imbricate în acest Linear Layout, pentru orientare orizontală, într-un rând, și pentru orientare verticală, într-o coloană. Valorile pe care le poate lua acest atribut sunt „horizontal”, pentru orientare orizontală și valoarea „vertical” pentru orientarea verticală.
android:gravity – setează poziționarea elementelor ce se află în interiorul Layout-ului. Prin aceasta se specifică și poziționarea pe axa X, dar și poziționarea pe axa Y relativă la fereastra în care se află obiectele. În funcție de valoarea acestui atribut, elementele sunt împinse în locul stabilit, dintre cele posibile amintim : „top” , „bottom”, „left” , „right”, „center”, „fill”, „fill_horizontal”, „fill_vertical”.
Fig. 3.6 Un exemplu de fereastră realizată printr-un Linear Layout
Cel de-al doilea Layout principal utilizat în aplicațiile Android pentru creerea de
View-uri este Relative Layout. Acesta își poziționează copii în poziții relative. Această poziție poate fi specificată relativ la la elemente frați cu elementul poziționat, spre exemplu la stânga sau sub un alt copil, sau se poate poziționa relativ la părintele său, fiind aliniat fie la stânga, jos, centru, etc.
Un Relative Layout este o unealtă foarte puternică pentru a desena o interfață cu utilizatorul, deoarece el are o ierarhie plană, care crește performanța, problema cu timpii ridicați de lucru pentru sistemele mobile cu specificații hardware scăzute dispare, desenarea elementelor fiind foarte rapidă în acest caz. Este chiar de preferat să se folosească în locul Linear Layout-urilor, Relative Layout-uri în proiectele Android.
Acest tip de layout permite unui element copil să se poziționeze relativ la părintele său, sau relativ la un alt element ce face parte din acest layout, utilizând identificatorii unici ai elementelor, ID-urile. Astfel se pot realiza configurări de genul: două elemente în partea dreaptă a ferestrei, unele în centrul său, altele aflate una sub cealaltă și așa mai departe. În mod implicit toate elementele într-un Relative Layout sunt poziționate în partea de stânga, sus.
Fig. 3.7 Un exemplu de fereastră realizată printr-un Relative Layout
Dintre proprietățile ce se pot seta acestui layout sunt :
android:layout_alignParentTop – setează poziționarea elementului nou creat să fie în partea de sus a părintelui. Valoarea pentru acest atribut este „true” care confirmă dorința de a poziționa elementul în acest fel.
android:layout_centerVertical – poziționează elementul nou creat în partea centrală a părintelui. Din nou valoarea ce se așteaptă aici este „true”.
android:layout_below – poziționează marginea noului element creat exact după elementul a cărui ID este dat ca valoarea acestui atribut. Formatul care se așteaptă pentru valoarea sa este de felul „@id/topElement” , unde „topElement” este partea din view sub care se poziționează acesta.
android:layout_toRightOf – poziționează elementul nou creat în dreapta celui specificat prin intermediul ID-ului, dat ca valoare acestui atribut. Formatul ce se așteaptă la valoare este la fel ca la „layout_below”.
Atributele descrise anterior pentru Linear Layout sunt valabile în continuare și funcționează în acelasi fel, cu excepția celor de „orientation” și „gravity” ce sunt specifice acelui tip de layout.
Valorile pentru aceste atribute sunt fie valori boolene, adică adevărat (true) sau fals (false) pentru a autoriza poziționarea unui element relativ la părintele său, sau sunt date prin intermediul unui identificator unic, care face referință spre un element din acest layout față de care se poziționează.
O altă categorie de layout-uri este cea care se crează folosind un adaptor (Adapter).Aceasta oferă o serie de alte posibilități de configurare, diferite de cele discutate anterior. Când conținutul pentru un layout este dinamic sau nu este definit în mod predeterminat atunci se pot folosi layout-urile create ca subclase ale lui AdapterView pentru a popula o fereastră la runtime. O astfel de subclasa a AdapterView folosește un adaptor (Adapter) pentru a își lega informația la layout. În acest caz, adaptorul preia datele dintr-o sursă anume, spre exemplu o listă, vector sau dintr-o bază de date, și le convertește într-un view ce poate fi adăugat în Layout-ul de AdapterView.
Fig. 3.8 Tipurile de Layout create cu ajutorul unui AdapterView
Cele mai importante două layout-uri create cu ajutorul unui adaptor sunt List View care crează o singură coloană ce poate fi derulabilă și Grid View care dispune elementele într-o grilă derulabilă de linii și coloane. Android-ul oferă o serie de subclase ale lui Adapter care sunt foarte utile atunci când sunt folosite pentru a prelua datele externe.
Subclasele clase Adapter care se folosesc pentru realizarea acestor tipuri de layout-uri sunt:
ArrayAdapter – utilizat pentru a colecta date din interiorul unei liste sau al unui tablou. Prin intermediul functiei toString() se creaza pentru fiecare element al tabloului sau al listei un view, care va fi mai apoi adaugat intr-un Text View
SimpleCursorAdapter – preia informatiile venite de la un obiect de tip Cursor. Pentru aceasta, unelement al layout-ului este utilizat pentru fiecare rand al obiectului de tip cursor.
Un exemplu pentru un Array Adapter este acesta:
ArrayAdapter adapter = new ArrayAdapter<String>(this,
android.r.layout.list_item , myStringArray);
De asemenea, un exemplu pentru a seta un adaptor la un ListView este:
ListView listView = (ListView) findViewById(R.id.listView);
listView.setAdatper(adapter);
Un ListView este un view care afișează o listă de elemente derulabile. Elementele sunt inserate în mod automat prin intermediul unui adaptor, care extrage conținutul dintr-o sursă predefinită și pune rezultatul în interiorul acestei liste.
Dintre proprietățile acestui Layout, putem aminti următoarele proprietăți specifice:
android:divider – care setează un element de desenare (Drawable) sau o culoare pentru linia desparțitoare dintre elementele listei. Valoarea ce se așteaptă este fie numele unei resurse din pachetul drawable, sau se poate oferi culoarea bării desparțitoare sub forma codului RGB „#000000”
android:divierHeight – prin care se poate seta inaltimea liniei care separa elementele; valoarea așteptată de atribut este dimensiunea, spre exemplu 10dp pentru o bară cu lățimea de 10 pixeli, unde dp reprezintă pixeli independenți de densitatea nativă a ecranului sistemului mobil
atributele generale ale unui Layout sunt valabile și aici, alături de aceste atribute specifice unui List View, cu excepția evidentă a cele native celorlalte tipuri de view-uri
Fig. 3.9 Exemplu de fereastră utilizând un List View
Ultimul tip de Layout ce se utilizează în crearea ferestrelor unei aplicații Android și cel de-al doilea din categoria celor implementate cu ajutorul unui Adapter este Grid View. Acesta afișează elementele sub forma unei grile derulabile folosing un ListAdapter.
Dintre proprietățile acestui Layout, putem aminti următoarele proprietăți specifice:
android:columnWidth – setează o lățime de valoare fixă pentru fiecare coloană; valoarea așteptată de atribut este dimensiunea în pixeli independenți de densitatea nativă a ecranului sistemului mobil (dp)
android:gravity – în acest caz, atributul gravity nu setează poziția unui layout sau a unui element din layout, ci setează poziționarea informației din fiecare căsuță a grilei; valoarea care se așteaptă rămâne aceeași, una dintre următoarele : „top”, „bottom”, „left”, „right”, „center”, „center_vertical”, „fill”
android:horizontalSpacing – definește spațierea orizontală dintre coloane; valoarea sa este în același format cu cea de la lățimea coloanelor (columnWidth) și anume valoarea sa în pixeli
android:numColumns – specifică numărul de coloane ce vor fi afișate; atributul așteaptă o valoare întreagă, pentru a seta coloanele de dispus în interiorul grilei
android:stretchMode – definește felul în care coloanele se vor extinde pentru a ocupa eventualul spațiu alb ce rămâne, în cazul în care se întâmplă acest lucru; valoarea acestui atribut trebuie să fie una din următoarele valori constante, „none” unde extinderea este oprită, „spacingWidth”, care mărește spațierea dintre coloane, sau „columnWidth” care face ca fiecare coloană să fie mărită în mod egal
Atributele comune se aplică și acestui tip de layout.
Pe lângă elementele principale de design ale unei ferestre dintr-o aplicație Android, Layout-urile sunt importante anumite elemente de design ale unui Layout, elemente constitutive ce pot fi suprapuse parțial astfel încât să dea aspectul dorit proiectului, dar să și satisfacă funcționalitatea dorită.
Unul din cele mai comune elemente de design ale unui view este Text View. Acesta afișează o secvență de text utilizatorului. Un TextView are următoarele atribute:
android:text – setează un text implicit ce poate fi afișat pe ecran; în cazul în care textul nu este actualizat dinamic de către aplicație, se poate folosi acest atribut a cărui valoare este chiar textul dorit
android:textSize – folosit pentru a seta dimensiunea textului (în pixeli)
android:textColor – alege culoarea cu care va fi afișat textul, atributul așteptând valoarea în cod RGB, de exemplu „#000000”, sau o culoare predefinită Android, la fel ca și pentru fundalul unui layout
android:padding – permite setarea distanței dintre marginea elementului și conținutul său; valoarea este de-asemenea în pixeli
android:visibility – configurează vizibilitatea elementului, un text poate fi ascuns vizualizării de către utilizator, putând fi afișat, spre exemplu în cazul unei erori
Atunci când textul este setat dinamic din aplicație, accesul la un element TextView se face în felul următor :
TextView title = (TextView) findViewById(R.id.example_title);
title.setText("This is how you set a Title."));
Un alt element de design ale unui view este EditText. . Acesta este foarte asemănător cu un TextView, diferența fiind că este editabil, utilizatorul putând introduce secvențe de text în acest câmp. Este folosit de obicei în formulare și în ferestre de dialog ce interacționează cu utilizatorul.Atributele de configurare ale EditText sunt similare cu cele de la TextView, primul având câteva atribute specifice și anume:
android:hint – permite afisarea unui text care dispare atunci cand utilizatorul incepe sa scrie; se foloseste in general cu scopul de a oferi indicii utilizatorului
android:inputType – este un atribut folosit pentru a defini ce fel de continut va avea EditText-ul respectiv; un caz special este cel al introducerii de parole, in care caracterele introduse sunt trasformate in caracterul “ * ”
Pentru a citi informația introdusă de utilizator, conținutul acestui element este transformat într-un și de caractere în următorul mod :
EditText textField = (EditText)findViewById(R.id.example_EditText);
String value = textField.getText().toString();
Al treilea element, foarte important ce i se poate atașa unui Layout este un buton.Apăsarea acestuia are ca efect declanșarea unei acțiuni.Specificarea operației care va fi efectuată în urma apăsării butonului se face în fișierul de configurare XML, prin adăugarea atributului „android:onClick” în care se specifică acțiunea ce se execută la click, fie se atașează un OnClickListener în cod, astfel:
Button button = (Button) findViewById(R.id.button_send);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Do something in response to button click
}
});
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: Ambient Mood Aplicatie Android (ID: 149374)
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.
