====== Colocviu 1 ====== ===== Model de Subiect =====
{{url>http://eim2016.andreirosucojocaru.ro/_media/colocvii/colocviu01/eim2016-tp01-varsim.pdf 90%,800px}}
{{ :colocvii:colocviu01:eim2016-tp01-varsim.pdf }} ===== Observații Generale ===== Pentru rezolvarea subiectelor propuse în cadrul colocviului 1, sunt necesare: * un cont Github personal, pe care să existe drepturi de citire și de scriere; * SDK-ul de Android (cu o imagine pentru nivelul de API 16 - Jelly Bean 4.1); * mediul de dezvoltare integrat (Eclipse împreună cu plugin-ul Android Developer Tools sau Android Studio); * un dispozitiv mobil: * fizic (bring your own device); * virtual: Genymotion, AVD. În situația în care lucrați pe calculatoarele din laboratorul Ixia (EG106) este recomandat să folosiți: * fluxbox ca utilitar pentru gestiunea ferestrelor (se alege din interfața de autentificare); * epiphany pentru navigare Internet. Este de preferat să nu se depășească memoria disponibilă, întrucât comportamentul acestor mașini este imprevizibil în momentul în care se folosește swap-ul (se blochează, fără posibilitatea de recuperare din eroare). ===== Rezolvări ===== Proiectele Eclipse / Android Studio corespunzătoare aplicației Android ce conține rezolvările complete ale cerințelor colocviului sunt disponibile pe [[https://github.com/eim2016/PracticalTest01|contul de Github al disciplinei]]. **A.1.** Se accesează [[https://www.github.com|Github]] și se realizează autentificarea în contul personal, prin intermediul butonului //Sign in//. {{ :colocvii:colocviu01:github_authentication.png?nolink&700 }} Se creează o zonă de lucru corespunzătoare unui proiect prin intermediului butonului //New Repository//. {{ :colocvii:colocviu01:github_new_repository.png?nolink }} Configurarea depozitului la distanță presupune specificarea: * unei denumiri; * unei descrieri (opțional); * tipului de director (public sau privat - doar contra cost!!!); * modului de inițializare: * local, prin ''git init''; * la distanță, prin ''git clone'' - depozitul la distanță nu trebuie să fie vid, în această situațoe * unui fișier ''README'' (opțional); * extensiilor ignorate (corespunzătoare limbajului de programare folosit, în cazul de față - Android) - incluse în fișierul ''.gitignore''; * tipului de licență sub care este publicat codul sursă. {{ :colocvii:colocviu01:github_repository_configuration.png?nolink }} **A.2.** Prin intermediul comenzii ''git clone'' se poate descărca întregul conținut în directorul curent (de pe discul local), inclusiv istoricul complet al versiunilor anterioare (care poate fi ulterior reconstituit după această copie, în cazul coruperii informațiilor stocate pe serverul la distanță). În situația în care se dorește clonarea conținutului din depozitul la distanță în alt director decât cel curent, acesta poate fi transmis ca parametru al comenzii, după URL-ul la care poate fi accesat proiectul în Github. student@eim2016:~$ git clone https://www.github.com/perfectstudent/PracticalTest01 **A.3.** Se urmăresc indicațiile disponibile în secțiunea [[:laboratoare:laborator01#crearea_unei_aplicatii_android_in_eclipse_mars_1_451_-_obligatoriu|Crearea unei aplicații Android în Eclipse Mars 1 (4.5.1)]] sau [[:laboratoare:laborator01#crearea_unei_aplicatii_android_in_android_studio_151_-_obligatoriu|Crearea unei aplicații Android în Android Studio 1.5.1]]. **A.4.** Implementarea interfeței grafice va fi realizată prin intermediul unui fișier ''.xml'' care va fi plasat în directorul ''/res/layout'' al proiectului. De cele mai multe ori, interfața grafică poate fi realizată în două moduri: * prin folosirea unui singur container de tip ''RelativeLayout'' în care vor fi plasate toate controalele, având poziția definită relativ unele la celelalte sau la marginile părintelui în care sunt incluse; * prin folosirea mai multor containere de tip ''LinearLayout'', imbricate, având orientări diferite (orizontal - implicit, sau vertical). * Varianta 1 - un singur container de tip ''RelativeLayout'' Dacă se dorește ca un anumit control să fie aliniat cu un control care se găsește deasupra sa (aliniere pe orizontală), acesta va fi indicat ca valoare pentru proprietățile ''android:layout_alignLeft'' și ''android:layout_alignRight'' (proprietatea ''android:layout_width'' fiind ignorată în acest caz). În mod similar, dacă se dorește alinierea cu un control aflat la stânga (aliniere pe verticală), acesta va fi precizat ca valoare pentru proprietățile ''android:layout_alignTop'' și ''android:layout_alignBottom'' (proprietatea ''android:layout_height'' fiind ignorată în acest caz).