Sunteți pe pagina 1din 24

LUCRARE PENTRU OBȚINEREA ATESTATULUI

PROFESIONAL LA INFORMATICĂ

“TaskSloth – Aplicație pentru Android”

Profesor coordonator: Candidat:


Belbe Maria Afrăsinei Cătălin

2020-2021
Cuprins

Introducere…………………………………………………………………………………...2

Descrierea aplicației…...……………………………………………………………………..2

Despre software-ul folosit……………………………………………………………………3


Despre Android Studio………………………………………………………………...3
Despre Java…………………………………………………………………….………3
Despre XML…………………………………………………………………………...4
Despre SQLite…………………………………………………………………………4

Structura aplicației…………………………………………………………………………...5
Splash screen-ul………………………………………………………………………..5
Interfața Grafică………………………………………………………………..5
Clasa SplashActivity…………………...............................................................6
Adăugarea / Modificarea unei sarcini………………………………………………….6
Interfața Grafică………………………………………………………………..6
Clasa AddNewTask……………………………………………………………7
Clasa RecyclerSwipe…………………………………………………………..9
Pagina principală ……………………………………………………………………..11
Interfața Grafică………………………………………………………………11
Clasa TaskModel…………………………………………………………..…12
Clasa TaskAdapter…………………………………………………………....13
Clasa DatabaseHandler…………………………………………………….…15
Clasa principală MainActivity……………………………………….……….17

Caracteristici pentru îmbunătățirea experienței…..……………………………………...20


Tema întunecată.……………………………………………………………………...20
Iconița aplicației ...............…………………………………………………………....21
Schimbarea limbii de afișare.........................................................................................22

Resurse web……………………………………………………………………………….....23

1
Introducere

În ziua de azi, oamenii sunt din ce în ce mai ocupați și au din ce în ce mai puțin timp

liber pentru a-și face activitățile preferate. Astfel, organizarea sarcinilor pe care sunt nevoiți să

le facă a devenit un lucru esențial în viața fiecăruia. O bună organizare asigură o eficiență

sporită în completarea sarcinilor și maximizează, deci, productivitatea fiecăruia și, totodată,

timpul liber al acestora.

Pornind de la acest considerent, am încercat să găsesc o soluție pentru această problemă

de zi cu zi și astfel, am creat aplicația pentru sistemul de operare Android, TaskSloth. Aceasta

este o aplicație construită special pentru task management, oferind utilizatorilor posibilitatea

de a-și organiza sarcinile de orice natură, fie ele proiecte importante de la locul de muncă sau

activități banale, precum plimbatul animalului de companie.

Descrierea aplicației

TaskSloth este o aplicație pentru Android, cel mai folosit sistem de operare mobil din

punct de vedere al utilizatorilor, astfel putând fi folosit de un număr mai mare de oameni.

Portabilitatea este o trăsătură esențială pentru o astfel de aplicație.

Aplicația a fost construită în mediul oficial de programare oferit de Google, Android

Studio, și este scrisă preponderent în limbajul de programare Java, folosind librării speciale

pentru programe de acest gen.

Aceasta este făcută cu ajutorul RecyclerView, CardView și folosește o bază de date

SQLite dentru stocarea sarcinilor.

2
Despre sofware-ul folosit

Despre Android Studio

Android Studio este mediul de programare (IDE) oferit de Google, special pentru

dezvoltarea aplicațiilor, pentru sistemul lor de operare, Android. Acesta este bazat pe software-

ul IntelliJ IDEA de la JetBrain, un alt IDE îndrăgit de programatori.

Acesta permite developerilor:

• să scrie, să construiască și să ruleze programele în Java sau Kotlin, folosite pentru

efectuarea propriu-zisă a acțiunilor aplicației.

• să scrie fișierele de tip XML, folosite pentru interfața aplicației.

• să emuleze un dispozitiv, pentru a ușura testarea aplicației și pentru a vedea produsul

final.

Despre Java

Java este un limbaj de programare orientat-obiect, puternic tipizat, conceput de către

James Gosling la Sun Microsystems (acum filială Oracle) la începutul anilor ʼ90, fiind lansat

în 1995. Cele mai multe aplicații distribuite sunt scrise în Java, iar noile evoluții tehnologice

permit utilizarea sa și pe dispozitive mobile, spre exemplu telefon, agendă electronică, palmtop

etc. În felul acesta se creează o platformă unică, la nivelul programatorului, deasupra unui

mediu eterogen extrem de diversificat. Acesta este utilizat în prezent cu succes și pentru

programarea aplicațiilor destinate intranet-urilor.

Limbajul împrumută o mare parte din sintaxă de la C și C++, dar are un model al

obiectelor mai simplu și prezintă mai puține facilități de nivel jos.

3
Despre XML

Extensible Markup Language (XML) este un meta-limbaj de marcare recomandat de

Consorțiul Web pentru crearea de alte limbaje de marcare. După cum sugerează și numele, este

un sistem extensibil de marcare, adică, mai simplu, este un sistem de marcare similar cu HTML,

doar că este mult mai bun și mai dinamic, diferența esențială fiind că tagurile nu sunt definite,

programatorul fiind liber să experimenteze.

Poate este dificil de înțeles, dar fișierele XML nu fac nimic, sunt doar secvențe de text

create pentru a structura, depozita și transporta informație. Acestea sunt utilizate în contextul

aplicațiilor mobile pentru a stoca date legate de interfața grafică a acestora.

Despre SQLite

SQLite este o mică bibliotecă C care implementează un motor de baze de date SQL

încapsulat, oferă posibilitatea de a-l introduce în diverse sisteme și necesită zero-configurare.

Aceasta nu necesită un server, făcându-l ideal pentru aplicații mobile.

4
Structura aplicației

TaskSloth este o aplicație cu o interfață simplă și intuitivă formată din 3 ecrane: splash

screen-ul, pagina pentru adăugarea sau moficarea unei sarcini și pagina principală.

Splash screen Pagina principală Pagina de adăugare/modificare

Splash Screen-ul

Splash screen-ul este pagina care apare cand deschizi aplicația, înainte de pagina

principală si are rolul de a îmbunatați look and feel-ul, complimentând-o din punct de vedere

estetic. Acesta este format din logo-ul aplicației pe un fundal în culoarea principală a acesteia

care sta pe ecran timp de 1.5 secunde.

Interfața Grafică

În fișierul activity_splash.xml sunt tag-uri

pentru un fundal culoarea slothgreen si o poza

de 100x100 pixeli in centrul acestuia cu logo-

ul aplicatiei ( din /main/res/drawable ).

activity_splash.xml

5
Clasa SplashActivity

SplashActivity.java

Această clasă face ca atunci când programul este inițializat interfața creată in fișierul

activity_splash.xml să apară pentru 1500 de milisecunde, după care pornește clasa principală

(MainActivity).

Adăugarea / Modificarea unei sarcini

Interfața Grafică

Această pagină este formata dintr-o casuță in

care utilizatorii pot introduce text si un buton

pentru a salva sarcina (nouă/modificată) care

își schimă culoarea în funcție dacă butonul

poate fi apăsat sau nu.

În fișierul new_task.xml sunt taguri pentru o

casuță de text modifcabilă (de tip EditText)

newtasktext si butonul newtaskbutton.

new_task.xml

6
Clasa AddNewTask

7
AddNewTask.java

Clasa AddNewTask folosește și este bazată pe clasa BottomSheetDialog pentru a putea

utiliza propritățiile necesare pentru o pagină de acest fel. Această clasă deschide layout-ul din

new_task.xml când este apelată, îl ajustează dacă tastatura este deschisă și face posibil ca

sarcinile noi introduse în casuța text newtasktext din new_task.xml să fie adăugate in baza de

date și totodată ca acestea, dacă sunt modificate ulterior, să fie actualizate in baza de date.

Aceasta ține cont dacă se introduc sarcini fară conținut și nu permite salvarea acestora. De

asemenea, dacă se apasă in afara interfeței, iese din ea.

8
Clasa RecyclerSwipe

Glisare înspre dreapta Glisare înspre stânga

Clasa RecyclerSwipe este bazată și foloseste clasa de utilități ItemTouchHelper. Această

clasă permite stergerea și modificarea de către utilizator a sarcinilor aflate in lista principală

printr-o interfață de tip glisare. Astfel, glisând cartonașele pe care sunt afișate sarcinile :

- înspre dreapta permite modificarea acestora, deschizându-se aceeași pagină ca și pentru

adăugarea a uneia noi dar cu textul existent în căsuță ( facută cu ajutorul clasei

AddNewTask ).

- înspre stânga permite stergerea acestora, deschizându-

se o noua fereastră de tip dialog în care se cere

confirmarea procesului de ștergere, în urma căreia se

9
șterge sau nu sarcina din baza de date. De asemenea, dacă se apasă in afara ferestrei, se

iese din ea.

Pentru o experiență mai placută și pentru ușurința utilizatorului, când cartonașele sunt

glisate, în spatele lor apare un fundal sugestiv roșu ( în cazul ștergerii ) sau verde ( în cazul

modificării ), împreună cu câte o iconiță cu un gunoi, respectiv un creion.

RecyclerSwipe.java

10
Pagina Principală

Aceasta este pagina centrală a aplicației și este formata dintr-un titlu mare în partea de

sus cu numele acesteia ( “TaskSloth” ) cu rol de antet pentru aceasta. Sub acesta se află lista de

sarcini sub forma unei liste verticale de tip Recycler View ( liniară ), cu posibilitatea de

derulare. Sarcinile propriu-zise sunt scrise sub forma unor cartonașe ( utilizând CardView ) în

Recycler View-ul menționat, prevăzute în stânga cu o căsuță care se poate bifa ( pentru a marca

finalizarea sarcinii respective ). Acestea sunt memorate automat într-o bază de date de tip

SQLite . În partea de jos, mijloc, se află un buton care “plutește” peste cartonașe și este alcătuit

dintr-o iconiță cu un “ + ” și textul “Add new task” care, odată apăsat, apelează clasa

AddNewTask, astfel oferind abilitatea de a adăuga o sarcină nouă.

Interfața grafică

În activity_main.xml sunt tag-uri pentru o căsuță text

care nu poate fi modificată de utilizator, o listă de tip

RecyclerView sub aceasta și un buton de tip

ExtendedFloatingActionButton în partea de jos.

activity_main.xml

11
În task_layout.xml ( folosit pentru

conținutul Recycler View-ului ) sunt tag-uri

pentru o interfață sub forma unui cartonaș de tip

MaterialCardView, și pentru o căsuță care poate

fi bifată de tip CheckBox alăturată de un text (

care va reprezenta enunțul sarcinii propriu-zise ).

task_layout.xml

Clasa TaskModel

Clasa TaskModel acționează ca un

“șablon” pentru obiectele de tip

task ( sarcinile în sine ) și conțin 3

variabile definitorii : un număr

întreg id, care reprezintă poziția în

baza de date, un număr întreg

TaskModel.java

status, care reprezintă dacă task-ul e finalizat sau nu ( 1 sau 0 ) și un șir de caractere task, care

reprezintă enunțul sarcinii în sine.

Aceste variabile sunt acompaniate de câte două acțiuni de bază care pot fi făcute cu ele

și anume get și set cu care se preiau datele stocate în fiecare, respectiv se atribuie date în fiecare.

12
Clasa TaskAdapter

Un Recycler View este, în esență, un grup de View-uri ( piesele de bază pentru

construirea oricărei interfețe ) și astfel, este nevoie de un adapter, care conține diferite metode

care “leagă” View-urile de datele din baza de date. Unele metode utile sunt, de exemplu,

getItemCount(), care returnează dimensiunea setului de date ( în cazul nostru numșărul de

sarcini ) sau onBindViewHolder() care asociază un ViewHolder cu datele corespunzătoare lui.

Clasa TaskAdapter este bazată pe clasa RecyclerView.Adapter, oferită de Google și

folosește o mare parte din sintaxa standard.

13
TaskAdapter.java

14
Clasa DatabaseHandler

Clasa DatabaseHandler se ocupă cu manevrarea datelor din baza de date, conținând

metode utile pentru diverse acțiuni cu elementele din baza de date, precum insertTask(), care

introduce sarcini noi în database, updateTask(), care actualizează textul sarcinii respective în

database ( esențială pentru a modifica sarcini ), updateStatus(), care actualizează statusul (

finalizat sau nu ) al unei sarcini.

Aceasta este bazată pe clasa SQLiteOpenHelper, folosind o bază de date de tip SQLite,

potrivită perfect pentru astfel de scenarii datorită implementării directe și ușoare.

15
DatabaseHandler.java

16
Clasa principală MainActivity

Aceasta este clasa principală a aplicației, unde sunt apelate diferitele clase create

anterior pentru a rezulta în produsul final.

Clasele importate în MainActivity, inițializarea variabilelor folosite

În MainActivity sunt importate toate clasele necesare create anterior, precum

TaskAdapter, DatabaseHandler, dar și alte clase necesare, cum ar fi java.util.ArrayList pentru

a lucra cu ArrayList-uri ( tablouri cu dimensiune variabilă ) sau

com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton pentru a

lucra cu butoane de tip ExtendedFloatingActionButton ( cum apare în parte de jos a paginii

centrale a aplicației ).

17
Apelarea diferitelor funcții în MainActivity.java

18
handleDialogClose(), din MainActiviy.java

De asemenea, am creat o funcție numită handleDialogClose necesară pentru situațiile

in care se iese dintr-o fereastră de dip dialog ( ca cea care apare când se cere confirmarea

ștergerii unei sarcini ), care preia într-un ArrayList toate componentele de tip sarcină din baza

de date, le inversează ordinea ( astfel încât ultimul adăugat să fie afișat primul ), atașează

adapter-ului elementele ArrayList-ului și îl ’’anunță” că s-au produs modificări.

19
Caracteristici pentru îmbunătațirea experienței

Tema întunecată

O mare parte din aplicațiile si site-urile moderne oferă

utilizatorilor o opțiune de temă întunecată, cu scris alb pe un

fundal întunecat sau chiar negru. Această temă ( numită și

Dark Mode ) este mai plăcută din punct de vedere vizual

pentru mulți oameni, totodată solicitând mai puțin ochii. De

asemenea, apar și alte beneficii precum un consum redus a

dispozitivelor cu ecran de tip OLED .

Google oferă posibiliatea de adăugare a unei astfel de temă

oricărui programator, prin modificarea tag-urilor din

main/res/layout/values-night/themes.xml, similar cu cele din

fișierele XML pentru layout.

În aplicația TaskSloth, tema se schimbă automat în funcție de tema aleasă de utilizator

pentru dispozitivul său mobil pentru o continuitate în utilizarea acestuia.

Comparație între tema normală și tema întunecată

20
Iconița aplicației

Orice aplicație pentru un dispozitiv mobil are nevoie de

o iconiță pentru a ușura și a imbunătății experiența

utilizatorului.

Android Studio oferă posibilitatea de a adăuga o

iconiță, adăugând fișierul de tip poză în main/res/mipmap-*/.

Aplicația TaskSloth folosește o iconiță cu logo-ul acesteia și anume un leneș ( sloth în

Română ), agățat de o bifă, care indică natura aplicației.

Iconița aplicației TaskSloth pe un


ecran de start al unui dispozitiv Android

21
Schimbarea limbii de afișare

Pentru o experiență mai plăcută și pentru un număr mai mare de utilizatori mulțumiți

este esențială oferirea opțiunii de a schimba limba în care este afișat textul din aplicație.

În aplicația TaskSloth este implementată limba engleză și limba română, care se

schimbă în mod automat, în funcție de limba stabilită de utilizator pentru dispozitivul său în

setări. Android Studio oferă posibilitatea de a adăuga limbi noi modificând tag-urile din

main/res/layout/values-night/strings.xml și se introduc în fișierele de tip XML utilizând

structuri de genul “ android:text="@string/ * " “, iar în fișierele java utilizând structuri de genul

“ String * =adapter.getContext().getResources().getString(R.string.*); “

Interfața aplicației TaskSloth în limba română, schimbată automat

22
Resurse Web

“Android Developers.” Android Developers, https://developer.android.com/. Accessed 9 Mar.

2021.

“Android Studio - Wikipedia.” Wikipedia, the Free Encyclopedia, Wikimedia Foundation, Inc.,

16 May 2013, https://en.wikipedia.org/wiki/Android_Studio.

“Java (Limbaj de Programare) - Wikipedia.” Wikipedia, Wikimedia Foundation, Inc., 20 May

2005, https://ro.wikipedia.org/wiki/Java_(limbaj_de_programare).

“GeeksforGeeks | A Computer Science Portal for Geeks.” GeeksforGeeks,

https://www.geeksforgeeks.org/.

https://developer.android.com/. “Download Android Studio and SDK Tools | Android

Developers.” Android Developers, https://developer.android.com/studio.

“Stack Overflow - Where Developers Learn, Share, & Build Careers.” Stack Overflow,

https://stackoverflow.com/.

“Support Different Languages and Cultures | Android Developers.” Android Developers,

https://developer.android.com/training/basics/supporting-devices/languages.

“XML - Wikipedia.” Wikipedia, Wikimedia Foundation, Inc., 4 Oct. 2005,

https://ro.wikipedia.org/wiki/XML.

23

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