30/06/2025
Vrei să-ți transformi ideile în aplicații mobile interactive și captivante? Lumea dezvoltării Android este mai accesibilă ca niciodată, iar cu instrumentele potrivite, poți începe să construiești chiar astăzi. Acest ghid detaliat te va purta prin procesul de creare a primei tale aplicații Android, folosind limbajul modern Kotlin și cadrul de interfață de utilizator (IU) de ultimă generație, Jetpack Compose. Pregătește-te să descoperi cum funcționează crearea unei aplicații de la zero, de la configurarea mediului de dezvoltare până la personalizarea aspectului și a funcționalității.

1. Pregătirea Terenului: Instalarea Android Studio
Primul și cel mai important pas în călătoria ta de dezvoltare Android este instalarea Android Studio. Acesta este mediul de dezvoltare integrat (IDE) oficial și esențial oferit de Google pentru construirea aplicațiilor Android. Asigură-te că sistemul tău îndeplinește cerințele minime necesare pentru a rula Android Studio fără probleme, informații pe care le poți găsi pe pagina oficială de descărcare. Odată instalat, Android Studio devine spațiul tău de lucru, oferind toate uneltele necesare pentru a scrie cod, a depana și a rula aplicațiile tale.
În acest ghid, vom folosi o abordare modernă, bazată pe Kotlin și Jetpack Compose. Kotlin este un limbaj de programare concis, sigur și interoperabil, care a devenit rapid preferatul dezvoltatorilor Android, înlocuind Java ca limbaj principal. Jetpack Compose, pe de altă parte, este un toolkit modern pentru construirea IU native pe Android. Acesta simplifică și accelerează dezvoltarea IU, permițându-ți să creezi interfețe frumoase și reactive cu mai puțin cod. Chiar dacă interfața Android Studio poate suferi mici modificări odată cu actualizările, conceptele fundamentale pe care le vom explora aici rămân aceleași.
Cerințe preliminare:
- Cunoștințe de bază despre Kotlin.
- Cea mai recentă versiune de Android Studio instalată.
La finalul acestui segment, vei ști cum să-ți pregătești mediul de lucru pentru a începe aventura dezvoltării.
2. Primul Pas: Crearea unui Proiect Nou
Odată ce Android Studio este instalat și gata de utilizare, este timpul să creezi primul tău proiect. Acesta va servi drept fundație pentru aplicația ta. Android Studio oferă o varietate de șabloane de proiect, care îți pun la dispoziție o structură de bază și fișierele necesare, accelerând procesul de dezvoltare.
Cum să creezi un proiect nou:
- Lanseză Android Studio făcând dublu clic pe iconița sa.
- În dialogul Welcome to Android Studio, selectează opțiunea New Project.
- Se va deschide fereastra New Project, afișând o listă de șabloane. Asigură-te că este selectată fila Phone and Tablet.
- Alege șablonul Empty Activity. Acesta este ideal pentru a începe, deoarece oferă un proiect simplu, cu o singură fereastră, care afișează inițial textul "Hello Android!". Este punctul de plecare perfect pentru a construi o aplicație bazată pe Compose.
- Dă clic pe Next.
- Se va deschide dialogul New Project, unde va trebui să configurezi detaliile proiectului tău:
- Name: Introdu numele proiectului tău. Pentru acest exemplu, vom folosi "Greeting Card".
- Package name: Lasă-l așa cum este. Acesta organizează fișierele în structura proiectului (ex:
com.example.greetingcard). - Save location: Reține această locație, deoarece aici vor fi salvate toate fișierele proiectului tău.
- Minimum SDK: Din meniul derulant, selectează API 24: Android 7.0 (Nougat). Aceasta indică versiunea minimă de Android pe care aplicația ta o va putea rula.
- Dă clic pe Finish.
Procesul de configurare poate dura câteva momente, timp în care Android Studio va pregăti toate componentele necesare. Vei vedea mesaje și o bară de progres care indică starea operațiunii. După finalizare, vei observa probabil un panou What's New; îl poți închide pentru moment. Pentru a vedea atât codul, cât și designul aplicației tale în același timp, dă clic pe Split în colțul din dreapta sus al Android Studio. Astfel, vei avea trei zone distincte:
- Project view (1): Afișează fișierele și folderele proiectului tău.
- Code view (2): Aici vei edita codul aplicației.
- Design view (3): Oferă o previzualizare a aspectului aplicației tale.
Dacă în Design view vezi o zonă goală, dă clic pe Build & Refresh. După o scurtă compilare, previzualizarea ar trebui să afișeze textul "Hello Android!". Această "Activitate Compozabilă Goală" conține deja tot codul necesar pentru a crea această aplicație simplă.
3. Structura Proiectului Tău Android
Acum că ai creat primul tău proiect, este esențial să înțelegi cum este organizat în Android Studio. Secțiunea Project, situată de obicei în partea stângă a IDE-ului, este punctul central de navigare prin fișierele și folderele proiectului tău.
Când ai configurat proiectul, ai observat "numele pachetului" (de exemplu, com.example.greetingcard). Acest nume de pachet se reflectă în structura de fișiere ca o serie de foldere imbricate, care, în esență, acționează ca niște containere pentru codul tău. Android Studio organizează proiectul într-o structură de director care constă dintr-un set de pachete, facilitând gestionarea și accesul la fișiere.
În mod implicit, secțiunea Project este setată pe vizualizarea Android (poți verifica acest lucru în meniul derulant din partea superioară a panoului Project). Această vizualizare este optimizată pentru dezvoltarea Android, afișând fișierele într-un mod logic și ușor de utilizat pentru programatori. Este vizualizarea pe care o vei folosi cel mai des, deoarece îți permite să accesezi cu ușurință fișierele relevante pentru dezvoltarea aplicației tale.
Dacă, din curiozitate, selectezi Project Source Files din același meniu derulant, vei observa o organizare complet diferită a fișierelor, similară cu cea pe care ai vedea-o într-un explorator de fișiere al sistemului de operare (cum ar fi Finder pe Mac sau Windows Explorer). Deși utilă pentru a înțelege structura fizică a discului, această vizualizare nu este la fel de eficientă pentru scrierea și gestionarea codului în Android Studio. Asigură-te că revii la vizualizarea Android pentru o experiență de dezvoltare optimă. Dacă structura fișierelor tale pare ciudată la un moment dat, primul lucru de verificat este dacă ești în vizualizarea corectă.
4. Personalizarea Textului: Spune "Salut" Lumii Tale
Acum că ești familiarizat cu Android Studio și cu structura proiectului, este timpul să personalizezi textul afișat în aplicația ta. Vom începe prin a explora fișierul MainActivity.kt, care este inima aplicației tale.
Deschide MainActivity.kt și aruncă o privire la cod. Vei observa câteva funcții generate automat, în special onCreate() și setContent(). Funcția onCreate() este punctul de intrare al acestei aplicații Android. Ea este apelată când activitatea este creată și, în esență, inițializează aplicația. În programele Kotlin "obișnuite", funcția main() este punctul de plecare, dar în aplicațiile Android, onCreate() îndeplinește acest rol.
În interiorul onCreate(), vei găsi funcția setContent(). Aceasta este utilizată pentru a defini interfața de utilizator a aplicației tale, folosind așa-numitele "funcții compozabile". Orice funcție marcată cu adnotarea @Composable poate fi apelată din setContent() sau din alte funcții compozabile. Această adnotare îi spune compilatorului Kotlin că funcția respectivă este utilizată de Jetpack Compose pentru a genera elemente de interfață de utilizator.
Mai jos, vei vedea o funcție numită Greeting(). Aceasta este o funcție compozabilă, așa cum indică adnotarea @Composable de deasupra ei. O funcție compozabilă ia o anumită intrare (în acest caz, un name - nume) și generează ceea ce este afișat pe ecran. În prezent, funcția Greeting() preia un nume și afișează un salut simplu, "Hello $name!".
@Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Text(text = "Hello $name!", modifier = modifier) }Pentru a personaliza salutul, modifică funcția Greeting() astfel încât să te prezinte pe tine în loc de "Hello":
@Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Text(text = "Hi, my name is $name!", modifier = modifier) }Android Studio ar trebui să actualizeze automat previzualizarea. Acum, textul s-a schimbat, dar probabil că te prezintă ca "Android", ceea ce nu e numele tău. Pentru a personaliza și mai mult, vom folosi funcția GreetingPreview().
Funcția GreetingPreview() este o unealtă incredibil de utilă care îți permite să vezi cum arată o funcție compozabilă fără a fi nevoie să compilezi întreaga aplicație. Pentru a activa previzualizarea unei funcții compozabile, trebuie să adaugi adnotările @Composable și @Preview. Adnotarea @Preview îi indică Android Studio că această funcție compozabilă ar trebui să fie afișată în vizualizarea de design a fișierului.
Adnotarea @Preview poate lua și parametri, cum ar fi showBackground. Dacă setezi showBackground = true, se va adăuga un fundal la previzualizarea elementului compozabil, ceea ce poate fi util pentru vizualizare, mai ales dacă folosești un tema deschisă în editor.
Actualizează funcția GreetingPreview() cu numele tău. Apoi, compilează din nou aplicația (dacă nu se actualizează automat) și verifică-ți cartea de prezentare personalizată!
@Preview(showBackground = true) @Composable fun GreetingPreview() { GreetingCardTheme { Greeting("Numele Tău") // Înlocuiește "Numele Tău" cu numele tău real } }5. Adăugarea Culoarei: Un Fundal Vibrant
Ai reușit să personalizezi textul, dar să fim sinceri, fundalul alb este puțin cam plictisitor. În această secțiune, vom învăța cum să schimbăm culoarea de fundal a mesajului tău de salut.
Pentru a seta o culoare de fundal diferită, va trebui să "înfășori" textul într-un container special numit Surface. Un Surface este un container fundamental în Jetpack Compose care reprezintă o secțiune a interfeței de utilizator unde poți modifica aspectul, cum ar fi bordura sau culoarea de fundal. Este ca o pânză pe care poți desena elemente.
Pașii pentru a adăuga un fundal colorat:
- În funcția
Greeting(), selectează linia de cod care conțineText(...). - Apăsă
Alt+Enter(pe Windows) sauOption+Enter(pe Mac). - Din meniul contextual, selectează Surround with widget, apoi Surround with Container. Implicit, Android Studio ar putea înfășura textul într-un
Box. - Șterge
Boxși scrieSurface()în locul său. Codul tău ar trebui să arate acum așa:
@Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Surface() { Text(text = "Hi, my name is $name!", modifier = modifier) } }- Acum, în interiorul parantezelor lui
Surface(), adaugă un parametrucolorși încearcă să-i atribuiColor.
@Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Surface(color = Color) { // 'Color' va fi roșu Text(text = "Hi, my name is $name!", modifier = modifier) } }Vei observa că "Color" va fi marcat cu roșu, indicând o eroare. Acest lucru se întâmplă deoarece Android Studio nu știe de unde să importe clasa Color. Pentru a rezolva problema, adaugă următoarea linie la lista de importuri din partea de sus a fișierului:
import androidx.compose.ui.graphics.ColorOdată adăugat, poți folosi funcția Optimize Imports (accesibilă prin Help > Optimize Imports sau Code > Optimize Imports) pentru a ordona alfabetic importurile și a le elimina pe cele neutilizate. Aceasta este o practică bună de codare.
După ce ai importat Color, "Color" din Surface(color = Color) va fi subliniat cu roșu. Pentru a finaliza selecția culorii, adaugă un punct după "Color". Android Studio, fiind un IDE inteligent, îți va sugera diverse opțiuni de culori predefinite. Alege o culoare care îți place; pentru acest exemplu, vom folosi Color.Cyan:
@Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Surface(color = Color.Cyan) { Text(text = "Hi, my name is $name!", modifier = modifier) } }Observă cum previzualizarea aplicației tale se actualizează, afișând acum textul tău personalizat pe un fundal colorat! Ai făcut un pas mare în personalizarea interfeței de utilizator.
6. Spațiere și Eleganță: Adăugarea de Padding
Acum că textul tău are un fundal colorat, probabil ai observat că textul este lipit de marginile fundalului. Pentru a îmbunătăți aspectul și lizibilitatea, vom adăuga puțin spațiu în jurul textului, folosind conceptul de padding.
În Jetpack Compose, un Modifier este un element extrem de puternic și versatil, folosit pentru a "decora" sau a "îmbunătăți" un element compozabil. Modificatorii pot schimba dimensiunea, aspectul, comportamentul, sau chiar adăuga funcționalități unui element. Un modificator pe care îl vom folosi acum este padding, care adaugă spațiu în jurul elementului (în acest caz, în jurul textului).
Fiecare element compozabil ar trebui să aibă un parametru opțional de tip Modifier, care ar trebui să fie, de obicei, primul parametru opțional. Vom adăuga padding la modificatorul existent al textului cu o valoare de 24.dp. Unitatea dp (pixeli independenți de densitate) este crucială în dezvoltarea Android, deoarece asigură că elementele tale de interfață apar la o dimensiune consistentă pe diferite dispozitive, indiferent de densitatea pixelilor ecranului.
Aplicarea padding-ului:
Modifică funcția Greeting() astfel:
@Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Surface(color = Color.Cyan) { Text(text = "Hi, my name is $name!", modifier = modifier.padding(24.dp)) } }Similar cu importul pentru Color, va trebui să adaugi și importurile necesare pentru dp și padding, dacă Android Studio nu le adaugă automat:
import androidx.compose.ui.unit.dp import androidx.compose.foundation.layout.paddingNu uita să folosești Optimize Imports pentru a menține lista de importuri curată și ordonată alfabetic.
Felicitări! Ai compilat și personalizat prima ta aplicație Android folosind Kotlin și Jetpack Compose. Acest lucru este o realizare semnificativă! Ia-ți un moment să experimentezi cu diferite culori și texte, personalizându-le după bunul plac. Acesta este doar începutul a ceea ce poți construi în lumea dezvoltării Android!
Întrebări Frecvente (FAQ)
Ce este Jetpack Compose?
Jetpack Compose este un set de instrumente modern și declarativ pentru construirea interfețelor de utilizator native în Android. Spre deosebire de abordările tradiționale bazate pe XML, Compose permite dezvoltatorilor să-și descrie IU folosind direct cod Kotlin, simplificând și accelerând procesul de dezvoltare. Este proiectat să fie mai intuitiv, mai puternic și să necesite mai puțin cod, permițând crearea de aplicații vizual atractive și performante cu o eficiență sporită.
De ce Kotlin este limbajul preferat pentru Android?
Kotlin este un limbaj de programare modern, static tipizat, care rulează pe mașina virtuală Java (JVM) și care a fost adoptat oficial de Google ca limbaj preferat pentru dezvoltarea Android. Motivele popularității sale includ concizia (necesită mai puțin cod pentru a realiza aceleași lucruri ca Java), siguranța (ajută la evitarea erorilor comune, cum ar fi NullPointerException), interoperabilitatea deplină cu Java (poți folosi biblioteci Java în proiecte Kotlin și invers) și suportul excelent din partea Google și a comunității.
Ce este un Modifier și de ce este important?
Un Modifier în Jetpack Compose este un obiect imutabil care îți permite să decorezi sau să adaugi comportament elementelor tale compozabile. Poate fi folosit pentru a schimba dimensiunea, aspectul, poziția, interacțiunile, sau chiar pentru a adăuga funcționalități precum gestionarea evenimentelor de clic. Este un concept fundamental în Compose, deoarece permite o modularitate și o reutilizare excelentă a codului, oferind un control fin asupra modului în care elementele IU sunt afișate și interacționează.
Ce înseamnă "API Level" în Android?
API Level (Nivelul API) este un număr întreg care identifică în mod unic versiunea API a platformei Android. Fiecare versiune nouă de Android (de exemplu, Android 7.0 Nougat, Android 10, Android 13) are un nivel API corespunzător. Când setezi un "Minimum SDK" pentru aplicația ta, specifici cel mai mic nivel API pe care aplicația ta îl va suporta. Aceasta înseamnă că aplicația ta va rula pe dispozitive care au acea versiune de Android sau o versiune mai nouă. Alegerea unui nivel API minim influențează numărul de utilizatori care pot rula aplicația ta și setul de funcționalități pe care le poți utiliza.
De ce folosim dp și nu px pentru dimensiuni?
În dezvoltarea Android, folosim unități de măsură "density-independent pixels" (dp sau dip) în loc de pixeli absoluți (px) pentru a defini dimensiunile elementelor de interfață. Un pixel independent de densitate este o unitate abstractă bazată pe densitatea fizică a ecranului. Motivul este că diferite dispozitive Android au densități de pixeli foarte diferite. Folosind dp, te asiguri că elementele UI apar la o dimensiune consistentă, indiferent de densitatea ecranului, oferind o experiență vizuală uniformă pentru utilizatori, indiferent de dispozitivul pe care îl folosesc.
Dacă vrei să descoperi și alte articole similare cu Creează-ți Prima Aplicație Android cu Kotlin și Compose, poți vizita categoria Fitness.
