Activitati

Ferestre

In sistemul Android ferestrele se numesc activitati. Din punct de vedere al programarii, acestea sunt clase care extind clasa Activity. Spre deosebire de alte sisteme in care un program contine mai multe ferestre afisate simultan, in Android, ecranul este mereu ocupat de o singura fereastra. Mai mult, ferestrele sunt conectate prin simplul fapt ca o fereastra da nastere mai multor ferestre. Fereastra care apare pe ecran in momentul in care aplicatia este pornita este considerata fereastra principala, din ea pornind toate celelalte.

Pentru a crea o activitate, vom crea o clasa ce extinde clasa Activity. La pornire, programul o va genera, iar noi putem interactiona cu fereastra prin evenimente. Unele dintre cele mai importante evenimente sunt: onCreate si onPause.

public class MainActivity extends Activity 
{
 
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);        
    }
 
    @Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
 
    @Override
	protected void onPause() 
    {
		// TODO Auto-generated method stub
		super.onPause();
    }
 
}

Nu uitati sa apelati functia parintelui (in exemplul nostru Activity) in interiorul evenimentelor!

onCreate

Evenimentul este apelat in momentul in care se creaza activitate. Aici vom initializa compentele ferestrei. Pentru a face elementele de pe fereastra vizibile, este necesar sa apelam functia setContentView.
Exista cazuri in care la pornirea eplicatiei, aceasta trebuie sa revina la o stare anterioara (ex: dupa o oprire fortata). Astfel, este recomandat ca in acest aveniment sa se verifice daca fereastra este una noua sau nu, adica daca variabila de tip Bundle pasata ca parametru este nula sau nu.

if (savedInstanceState!=null)
{
//fereastra nu e noua si trebuie incarcate anumite date ramase
}
else
{
//fereastra e noua
}

Accesarea elementelor grafice din Java

Widget-urile pot fi modificate si din codul Java, nu doar fisierul XML, deoarece apropate toate proprietatile din XML au o functie echivalenta in JAVA. Apelam la aceasta optiune cand dorim ca la apelarea unui anumit eveniment, un element al ferestrei sa se modifice. Pentru a realiza acest lucru, trebuie sa cream o legatura intre elementul din XML si partea de cod.
In primul rand, pe langa propietatile deja setate, ale elementului, vom mai adauga una:id.

android:id="@+id/idElement"

Dupa ce elementul poate fi identificat prin id, il putem lega de codul Java.

Button buton=findViewById(R.id.buton1);

Setarea evenimentelor pe elementele grafice

Pana acum am editat fereastra aplicatiei, dar aceasta nu este functionala. Pentru a putea utiliza butoanele create, trebuie sa le legam de actiunea pe care dorim sa o execute. Acest lucru se realizeaza prin intermediul unei alte proprietati:

android:onClick="metodaExecutata"

Exemplu:

In fisierul java:

 public void schimbaCuloareaTextului(View v){
		Button b = (Button) findViewById(R.id.butonulCuloare);
		b.setTextColor(Color.RED);
	}

In fisierul xml:

 android:onClick="schimbaCuloareaTextului"

O alta posibilitate este sa folosim functia setOnClickListener(), ca in exemplul urmator:

public class MyActivity extends Activity {
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);

         setContentView(R.layout.content_layout_id);

         final Button button = (Button) findViewById(R.id.button_id);
         button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 // Perform action on click
             }
         });
     }
 }

Daca dorim sa executam o actiune la un alt eveniment si nu la apasarea butonului, vom selecta o alta variabila in loc de onClick.

Utilizarea resurselor

In aplicatiile noastre vom dori sa folosim diferite resurse, cum ar fi imaginile. Toate aceste elemente pe care dorim sa le adaugam in aplicatie trebuie salvate in directorul res. Ele pot fi adaugate din codul XML sau din cadoul Java.
In XML exista anumite elemente care suporta aceste resurse, cum ar fi ImageView. Acestea se pun pe view folosind urmatoarea atribuire:

android:src="@drawable/nume_poza"

Din codul Java, ele se adauga astfel:

ImageView i=(ImageView) findViewById(R.id.img);
        i.setImageResource(R.drawable.image);

Exercitii

Exercitiu 1

  • Creati o fereastra care sa arate ca in imagine
  • Inserati spatii intre butoane.
  • Mariti dimensiunile butoanelor, dand o valoare exacta, si faceti astfel incat textul sa ramana centrat.
  • Adaugati un eveniment pe butonul Modifica culoare astfel incat la apasare, acesta sa primeasca o alta culoare.
  • Modificati evenimentul astfel incat de data aceasta, butonul sa dispara.
  • La apasarea butonului Imagine sa apara o imagina in josul paginii.
  • La apasarea butonului Schimba schimbati imaginea de la punctul anterior.
  • Faceti ca la apasarea butoanelor de pe randul 2, sa se afiseze pe ecran textul de pe butonul apasat.

Hint: folositi un Toast, ca in exemplul Toast.makeText(this, "Bravo! Ai castigat!", Toast.LENGTH_SHORT).show();

Exercitiu 2 Sa ne amintim de interfata grafica pe care am creat-o in laboratorul 2.

  • CheckBox-ul Mega Functie va transforma textul Rezultat Rezultat intr-un text magulitor adresat utilizatorului.
  • Pentru a calcula greutatea ideala vom aplica formula urmatoare in momentul in care e apasat butonul Greutate ideala: inaltime - 110 si vom afisa in campul Rezultat.
  • Butonul Sterge va reinitializa valorile din toate campurile.
  • Elementele din RadioGroup permit utilizatorului sa precizeze in ce unitate de masura si-a comunicat greutate. Daca este in metri, cand se va apasa butonul Greutate Ideala, se va tine cont ca e necesar sa se transforme metri in centimetri.
  • Cum schimb valoarea textului din unul dintre cele doua campuri Greutate sau Inaltime, valoarea textului Rezultat va fi reinitializata.
  • Se va afisa un mesaj de eroare daca utilizatorul va incerca sa calculeze greutatea ideala in momentul in care valoarea inaltimii este 0 sau mai mare de 200.
introducere_android/curs/curs3.txt · Ultima modificare: 2013/08/06 02:29 de către alexandra.barbatei
CC Attribution-Noncommercial-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