Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pdm:laboratoare:02 [2016/03/20 23:44]
alexandru.radovici
pdm:laboratoare:02 [2016/03/20 23:54] (current)
alexandru.radovici
Line 9: Line 9:
   * Programale de compilare a aplicațiilor   * Programale de compilare a aplicațiilor
  
-Pentru a face instalarea mai ușoară, Google oferă un pachet cu toate cele trei componente configurate. Acesta se numește ADT Bundle și se poate descărca de la adresa [[http://​developer.android.com/​sdk/​index.html|acesta]]. Fișierul este o arhivă zip, care conține două directoare: eclipse și sdk. În primul director se află editorul, iar în al doilea se află compilatorul,​ biblioteciile și simulatoarele de Android. În continuare, vom denumi SDK_ROOT directorul în care am dezarhivat ADT Bundle. Vom porni editorul Eclipse din SDK_ROOT/​Eclipse/​eclipse. În Windows, acesta se numește eclipse.exe. Odată pornit, va trebui să verificăm că avem instalate toate pachetele necesare. Pentru acesta, vom merge în eclipse, la meniul Window/​Android SDK Manager. {{ :​laboratoare:​figura_2.png | Android SDK Manager}} Verificăm să fie instalate următoarele:​+Pentru a face instalarea mai ușoară, Google oferă un pachet cu toate cele trei componente configurate. Acesta se numește ADT Bundle și se poate descărca de la adresa [[http://​developer.android.com/​sdk/​index.html|acesta]]. Fișierul este o arhivă zip, care conține două directoare: eclipse și sdk. În primul director se află editorul, iar în al doilea se află compilatorul,​ biblioteciile și simulatoarele de Android. În continuare, vom denumi SDK_ROOT directorul în care am dezarhivat ADT Bundle. Vom porni editorul Eclipse din SDK_ROOT/​Eclipse/​eclipse. În Windows, acesta se numește eclipse.exe. Odată pornit, va trebui să verificăm că avem instalate toate pachetele necesare. Pentru acesta, vom merge în eclipse, la meniul Window/​Android SDK Manager. ​ 
 +{{ :pdm:​laboratoare:​figura_2.png | Android SDK Manager}} ​ 
 +Verificăm să fie instalate următoarele:​
  
   * Android SDK Tools   * Android SDK Tools
Line 74: Line 76:
   * Pe langa aceste directoare, se mai observa fisierul . Aici vom scrie detalii despre aplicatie, cum ar fi permisiunile si versiunea aplicatiei.   * Pe langa aceste directoare, se mai observa fisierul . Aici vom scrie detalii despre aplicatie, cum ar fi permisiunile si versiunea aplicatiei.
  
-Pentru prima aplicatie vom utiliza un buton la a carui apasare va aparea un mesaj. Pentru a pune buton pe fereastra vom deschide fisierul . Fisierul este structura pe tag-uri, fiecare element reprezentand un tag. Pentru a adauga butonul, vom scrie urmatoarea bucata de cod: <html><​Button +Pentru prima aplicatie vom utiliza un buton la a carui apasare va aparea un mesaj. Pentru a pune buton pe fereastra vom deschide fisierul . Fisierul este structura pe tag-uri, fiecare element reprezentand un tag. Pentru a adauga butonul, vom scrie urmatoarea bucata de cod:  
-         ​android:​id="​@+id/​buton"​  + 
-     ​android:​layout_width="​wrap_content"​ +<code xml><​Button 
-     ​android:​layout_height="​wrap_content"​ +      android:​id="​@+id/​buton"​  
-     ​android:​text="​Apasa" ​   /></html>+  android:​layout_width="​wrap_content"​ 
 +  android:​layout_height="​wrap_content"​ 
 +  android:​text="​Apasa" ​   /> 
 +</code>
  
 Pentru a adauga o actiune butonului, deschidem fisierul din directorul . Pentru a adauga o actiune butonului, deschidem fisierul din directorul .
Line 84: Line 89:
 {{ :​laboratoare:​activity_view1.png?​1000 |}} {{ :​laboratoare:​activity_view1.png?​1000 |}}
  
-Vom crea o noua functie ce va fi apelata la apasarea butonului. ​<​html>​<code java></​html> ​public void apasa(View v)+Vom crea o noua functie ce va fi apelata la apasarea butonului. ​ 
 +<code java> 
 +public void apasa(View v) 
 +    { 
 +    Toast.makeText(this,​ "​Hello!",​ Toast.LENGTH_SHORT).show();​ 
 +    } 
 +</​code>​ 
 + 
 +Pentru ca functia sa fie apelata la apasarea butonului, va trebui sa facem legatura intre buton si functie. Acest lucru se poate face in doua moduri: din codul programului sau din fisierul . Alegem cea de-a doua varianta, in care vom adauga urmatoarea linie in tag-ul butonului: ​
  
-''​%%   {%%''​\\ +<​code>​android:​onClick="apasa"</​code>​
-''​%%       Toast.makeText(this,​ "Hello!",​ Toast.LENGTH_SHORT).show();​%%''​\\ +
-''​%%   }%%''<​html>​</code></​html>+
  
-Pentru ca functia sa fie apelata la apasarea butonului, va trebui sa facem legatura intre buton si functie. Acest lucru se poate face in doua moduri: din codul programului sau din fisierul . Alegem cea de-a doua varianta, in care vom adauga urmatoarea linie in tag-ul butonului: ''​%%android:​onClick="​apasa"​%%'' ​Pentru a rula aplicatia, este necesar un simulator. Vom crea unul astfel: in Eclipse vom selecta ​+Pentru a rula aplicatia, este necesar un simulator. Vom crea unul astfel: in Eclipse vom selecta ​
  
 {{ :​laboratoare:​figura_3.png |}} {{ :​laboratoare:​figura_3.png |}}
Line 104: Line 115:
 Utilitarul pentru depanarea aplicatiilor pentru Android se numeste DDMS (Dalvik Debug Monitor System). Acesta foloseste de fapt un alt utilitar, numit ADB (Android Debug Bridge), pentru a se conecta la simulatoare sau dispozitive fizice. Cu ajutorul DDMS putem vizualiza parametrii dispozitivului si a programelor ce ruleaza pe acesta. DDMS poate fi accesat sub forma unei perspective in Eclipse. Utilitarul pentru depanarea aplicatiilor pentru Android se numeste DDMS (Dalvik Debug Monitor System). Acesta foloseste de fapt un alt utilitar, numit ADB (Android Debug Bridge), pentru a se conecta la simulatoare sau dispozitive fizice. Cu ajutorul DDMS putem vizualiza parametrii dispozitivului si a programelor ce ruleaza pe acesta. DDMS poate fi accesat sub forma unei perspective in Eclipse.
  
-Activarea se face din meniul: ​''​%%Window%%''​ ''​%%->%%''​ ''​%%Open%%''​ ''​%%Perspective%%''​ ''​%%->%%''​ ''​%%DDMS%%''​+Activarea se face din meniul: ​ 
 +<​code>​Window -> Open Perspective -> DDMS</​code>​
  
  
Line 111: Line 123:
 Cele mai importrante functii pe care DDMS le poate indeplini sunt: Cele mai importrante functii pe care DDMS le poate indeplini sunt:
  
-''​%% * Afisarea log-urilor dispozitivelor%%''​\\ +  ​* Afisarea log-urilor dispozitivelor 
-''​%% Afisarea informatiilor despre procesele curente %%''​\\ +  Afisarea informatiilor despre procesele curente 
-''​%% * Controlul simulatoarelor%%''​+  * Controlul simulatoarelor
  
 === Dispozitive === === Dispozitive ===
Line 186: Line 198:
 Scopul acestui laborator este studierea evenimetelor ferestrelor utilizand programele de depanare descrise mai sus. Am discutat la curs despre evenimentele pe care le primesc ferestrele. Schema urmatoare le ilustreaza mai bine. Apelurile de functie sunt reprezentate in dreptunghiurile gri.  Scopul acestui laborator este studierea evenimetelor ferestrelor utilizand programele de depanare descrise mai sus. Am discutat la curs despre evenimentele pe care le primesc ferestrele. Schema urmatoare le ilustreaza mai bine. Apelurile de functie sunt reprezentate in dreptunghiurile gri. 
  
-In continuare aveti ilustrat un exemplu de fereastra ce suprascrie toate functiile pentru evenimentele ce controleaza ciclul de viata. De remarcat este faptul ca fiecare dintre aceste functii face un apel catre functia parintelui (functie originala). Acest lucru este obligatoriu. ​<​html><​code java></​html>​ public class Evenimente extends Activity { +In continuare aveti ilustrat un exemplu de fereastra ce suprascrie toate functiile pentru evenimentele ce controleaza ciclul de viata. De remarcat este faptul ca fiecare dintre aceste functii face un apel catre functia parintelui (functie originala). Acest lucru este obligatoriu. ​
- +
-''​%%   @Override%%''​\\ +
-''​%%   public void onCreate(Bundle savedInstanceState) %%''​\\ +
-''​%%   {%%''​\\ +
-''​%%       super.onCreate(savedInstanceState);​%%''​\\ +
-''​%%   }%%''​\\ +
-\\ +
-''​%%   @Override%%''​\\ +
-''​%%   public void onStart ()%%''​\\ +
-''​%%   {%%''​\\ +
-''​%%       super.onStart();​%%''​\\ +
-''​%%   }%%''​\\ +
-\\ +
-''​%%   @Override%%''​\\ +
-''​%%   public void onRestart ()%%''​\\ +
-''​%%   {%%''​\\ +
-''​%%       super.onRestart();​%%''​\\ +
-''​%%   }%%''​\\ +
-\\ +
-''​%%   @Override%%''​\\ +
-''​%%   public void onResume ()%%''​\\ +
-''​%%   {%%''​\\ +
-''​%%       super.onResume();​%%''​\\ +
-''​%%   }%%''​\\ +
-\\ +
-''​%%   @Override%%''​\\ +
-''​%%   public void onPause ()%%''​\\ +
-''​%%   {%%''​\\ +
-''​%%       super.onPause();​%%''​\\ +
-''​%%   }%%''​\\ +
-\\ +
-''​%%   @Override%%''​\\ +
-''​%%   public void onStop ()%%''​\\ +
-''​%%   {%%''​\\ +
-''​%%       super.onStop();​%%''​\\ +
-''​%%   }%%''​\\ +
-\\ +
-''​%%   @Override%%''​\\ +
-''​%%   public void onDestroy ()%%''​\\ +
-''​%%   {%%''​\\ +
-''​%%       super.onDestroy();​%%''​\\ +
-''​%%   }%%''​\\ +
-\\ +
-''​%%   //​ functii folosite pentru salvarea si restaurarea starii    %%''​\\ +
-\\ +
-''​%%   @Override%%''​\\ +
-''​%%   public void onSaveInstanceState (Bundle outState)%%''​\\ +
-''​%%   {%%''​\\ +
-''​%%       //​ apelarea functiei din activitatea parinte este recomandata,​ dar nu obligatorie%%''​\\ +
-''​%%       super.onSaveInstanceState(outState);​%%''​\\ +
-''​%%   }%%''​\\ +
-\\ +
-''​%%   @Override%%''​\\ +
-''​%%   public void onRestoreInstanceState (Bundle inState)%%''​\\ +
-''​%%   {%%''​\\ +
-''​%%       //​ apelarea functiei din activitatea parinte este recomandata,​ dar nu obligatorie%%''​\\ +
-''​%%       super.onRestoreInstanceState(inState);​%%''​\\ +
-''​%%   }%%''​+
  
-<html></​code></​html> Puteti observa in exemplul de mai sus ca trei dintre functii primesc ca parametru un obiect de tip [[http://​developer.android.com/​reference/​android/​os/​Bundle.html|Bundle]]. Acesta este folosit pentru memorarea starii in cazul in care activitatea trebuie inchisa din lipsa de memorie. Astfel, functiile sunt apelate in felul urmator:+<​code ​java 
 +public class Evenimente extends Activity  
 +
 +    @Override 
 +    public void onCreate(Bundle savedInstanceState)  
 +    { 
 +        super.onCreate(savedInstanceState);​ 
 +    } 
 +  
 +    @Override 
 +    public void onStart () 
 +    { 
 +    super.onStart();​ 
 +    } 
 +  
 +    @Override 
 +    public void onRestart () 
 +    { 
 +    super.onRestart();​ 
 +    } 
 +  
 +    @Override 
 +    public void onResume () 
 +    { 
 +    super.onResume();​ 
 +    } 
 +  
 +    @Override 
 +    public void onPause () 
 +    { 
 +    super.onPause();​ 
 +    } 
 +  
 +    @Override 
 +    public void onStop () 
 +    { 
 +    super.onStop();​ 
 +    } 
 +  
 +    @Override 
 +    public void onDestroy () 
 +    { 
 +    super.onDestroy();​ 
 +    } 
 +  
 +    // functii folosite pentru salvarea si restaurarea starii ​    
 +  
 +    @Override 
 +    public void onSaveInstanceState (Bundle outState) 
 +    { 
 +        // apelarea functiei din activitatea parinte este recomandata,​ dar nu obligatorie 
 +    super.onSaveInstanceState(outState);​ 
 +    } 
 +  
 +    @Override 
 +    public void onRestoreInstanceState (Bundle inState) 
 +    { 
 +        // apelarea functiei din activitatea parinte este recomandata,​ dar nu obligatorie 
 +    super.onRestoreInstanceState(inState);​ 
 +    } 
 +
 +</code> 
 +Puteti observa in exemplul de mai sus ca trei dintre functii primesc ca parametru un obiect de tip [[http://​developer.android.com/​reference/​android/​os/​Bundle.html|Bundle]]. Acesta este folosit pentru memorarea starii in cazul in care activitatea trebuie inchisa din lipsa de memorie. Astfel, functiile sunt apelate in felul urmator:
  
   * %%//​%%onCreate%%//​%% - este apelata la crearea ferestrei (atentie: crearea este diferita de afisare). Parametrul savedInstance este fie null, daca fereastra este noua, sau este o instanta a unui obiect de tip Bundle in care a fost salvata starea anterioara (in functia onSaveInstanceState).   * %%//​%%onCreate%%//​%% - este apelata la crearea ferestrei (atentie: crearea este diferita de afisare). Parametrul savedInstance este fie null, daca fereastra este noua, sau este o instanta a unui obiect de tip Bundle in care a fost salvata starea anterioara (in functia onSaveInstanceState).
pdm/laboratoare/02.1458510246.txt.gz · Last modified: 2016/03/20 23:44 by alexandru.radovici
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