Convertor Valutar

Această aplicație Android permite utilizatorilor să converteze sume dintr-o monedă în alta folosind un API valutar. Aplicația utilizează Jetpack Compose pentru interfața grafică și arhitectura MVVM (Model-View-ViewModel) pentru gestionarea datelor și stării.

Funcționalități

  • Conversie valutară în timp real
  • Selectarea monedei de intrare și ieșire
  • Suport pentru mai multe limbi (română, engleză, germană)
  • Posibilitatea de a selecta culoarea butoanelor
  • Dropdown-uri căutabile pentru monede
  • Istoric al conversiilor salvate local
  • Interfață modernă și intuitivă construită cu Jetpack Compose

Tehnologii utilizate

  • 'Jetpack Compose' – UI declarativ modern
  • 'Kotlin' – limbajul principal
  • 'MVVM' – Model-View-ViewModel pentru arhitectură clară
  • 'Room' – salvarea locală a istoricului
  • 'Retrofit' – consum REST API pentru cursuri valutare
  • 'Multilingv' – suport pentru RO, EN, DE
  • 'Gradle' – build & dependency management
Persistența datelor cu Room – Istoric Conversii Valutare

Această componentă gestionează salvarea și accesarea istoricului conversiilor valutare utilizând biblioteca Room.

ConversionEntity

Entitatea care reprezintă o conversie valutară în baza de date.

  • 'id' – identificator unic generat automat
  • 'fromCurrency' – codul monedei de origine
  • 'toCurrency' – codul monedei de destinație
  • 'rate' – cursul de schimb utilizat
  • 'amount' – suma convertită
  • 'timestamp' – momentul conversiei (în milisecunde)

ConversionDao

Interfața DAO pentru accesul la datele conversiilor.

  • 'insert(conversion: ConversionEntity)' – inserează sau actualizează o conversie
  • 'getLast10()' – returnează ultimele 10 conversii, ordonate descrescător după timestamp
  • 'clearAll()' – șterge toate înregistrările din istoricul conversiilor

AppDatabase

Clasa abstractă care extinde RoomDatabase și oferă acces la DAO-ul de conversii.

  • 'conversionDao()' – returnează instanța DAO pentru conversii
Integrarea Retrofit – Obținerea cursurilor valutare

Această componentă se ocupă de comunicarea cu API-ul extern pentru a prelua cursurile valutare actualizate folosind biblioteca Retrofit.

ExchangeRatesResponse

Modelul de date care reprezintă răspunsul primit de la API:

  • 'date' – data la care se referă cursurile
  • 'base' – moneda de bază pentru conversii
  • 'rates' – map cu perechi valută–curs (cod valută → valoare curs)

CurrencyApiService

Interfața care definește endpoint-urile API-ului pentru Retrofit:

  • 'getLatestRates(apiKey, base)'
  • Parametri:
    • apiKey

      – cheia de acces la API

    • base

      – moneda de referință (implicit “USD”)

  • Returnează un obiect
    ExchangeRatesResponse

RetrofitInstance

Obiect singleton care configurează Retrofit:

  • BASE_URL

    URL-ul de bază al serviciului de cursuri valutare

  • api

    – instanța

    CurrencyApiService

    creată cu Retrofit (converter Gson)

ViewModels – Gestionarea logicii UI și a datelor

MainViewModel

Clasa extinde

AndroidViewModel

și se ocupă cu:

  • Gestionarea stării pentru conversia valutară (monede, sumă, rezultat)
  • Comunicarea cu API-ul pentru obținerea cursurilor valutare
  • Persistența conversiilor în baza de date locală folosind Room
  • Încărcarea istoricului ultimelelor 10 conversii
  • Tratarea erorilor și afișarea stării de încărcare

Funcții principale

  • fetchRates(apiKey)

    – încarcă cursurile valutare, actualizează starea și gestionează încărcarea/erorile

  • convert()

    – realizează conversia, actualizează

    result

    și salvează conversia

  • getConversionRate(from, to)

    – calculează rata de conversie între două monede

  • loadHistoryFromDb(language)

    – preia ultimele 10 conversii și formatează textul în funcție de limbă

Persistență

  • Baza de date Room creată în ViewModel
  • Conversiile inserate asincron cu corutine

SettingsViewModel

Clasa gestionează stările legate de configurarea aplicației (limbă, culoare butoane etc.)

Screens – Interfețele utilizator în Jetpack Compose

MainScreen

  • Încarcă cursurile valutare la lansare
  • Selectarea monedelor „from” și „to” prin dropdown-uri căutabile
  • Buton de comutare între monede populare și toate monedele
  • Introducerea sumei și conversia acesteia
  • Afișarea rezultatului
  • Navigare către istoric și setări
  • Mesaje de încărcare și eroare

SettingsScreen

  • Selectarea limbii aplicației prin radio buttons
  • Alegerea culorii butoanelor dintr-o paletă prestabilită
  • Buton de întoarcere la ecranul anterior
  • Actualizare dinamică a UI-ului

HistoryScreen

  • Încarcă ultimele 10 conversii la lansare
  • Afișează lista conversiilor
  • Buton de întoarcere la ecranul anterior
android/proiect/2025/proiecte/currency-convert.txt · Last modified: 2025/05/30 10:02 by alexandru.popa0809
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0