Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Prima aplicatie Android – un fel de Hello World mai “complicat”!

In acest nou episod consider ca este necesar sa scriem o prima, foarte simpla, aplicatie android. Desi mi-am propus sa nu depasesc 10 minute, am reusit sa scad numai la 19 minute. Incet, incet, incepe sa imi fie mai usor sa vorbesc in microfon (nu mult mai usor)

Ce avem in aceasta lectie: O aplicatie care contine un Button si un TextView si care permite interactiunea utilizatorului (apasarea butonului). Sunt explicate cateva concepte de baza, urmand ca in episoadele viitoare sa fie completate informatiile din acest episod.

O sa rezum in cateva linii – pentru cei care nu au rabdare sa vizioneze filmul, despre ce am vorbit in acest episod:
In acest episod prima aplicatie prince viata. E adevarat ca e o aplicatie care nu face nimic, insa e un punct de pornire si in episoadele viitoare voi adauga functionalitati care sa ajute intelegerea programarii android. Aplicatia are un Button si un TextView, la apasarea butonului textul TextView-ului se schimba!

Pentru a realiza acest lucru avem nevoie de crearea unui fisier XML care sa defineasca interfata cu utilizatorul. Codul XML care face asta este:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:id="@+id/txtTitle"
        />
    
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Change Title"
        android:id="@+id/btnChange" />
</LinearLayout>

Dupa cum se vede, elementul radacina este LinearLayout – care este definit, pe site la android asa: “LinearLayout is a ViewGroup that displays child View elements in a linear direction, either vertically or horizontally.“, care in romana s-ar traduce (si adapta): LinearLayout este un control de tip ViewGroup care gazduieste controale copil de tip View aranjate unele dupa altele sau unele sub altele.
Orientarea este data de orientation=”vertical” care poate lua valorile “vertical” sau “horizontal”. In interiorul acestui container sunt gazduite alte controale, care la randul lor, pentru o mai complexa pozitionare, pot fi controale simple sau containere care la randul lor gazduiesc alte controale. LinearLayout poate fi considerat cel mai simplu tip de control de tip container, pe parcurs vom folosi si alte tipuri de containere.

In aceasta prima aplicatie vom folosi 2 controale copil, Button si Textview pe care le gazduim in LinearLayout. Codul XML nu cred sa puna probleme de intelgere, asa ca nu voi scrie mai multe despre el. Vreau sa ma opresc asupra unui singur detaliu, si anume id-urile asociate controalelor.

In android (XML) un id este, obligatoriu, de forma @+id/nume_id, si asta ajuta parserul XML sa il identifice ca si resursa in cadrul proiectului. Pentru orice id este creat, in mod automat, un int in fisierul R.java, asa:

    public static final class id {
        public static final int btnChange=0x7f050001;
        public static final int txtTitle=0x7f050000;
    }

Sa trecem acum la partea de java: avem o clasa, Test_01Activity, care extinde clasa Activity (orice fereastra a aplicatiei trebuie sa extinda clasa Activity) si care implementeaza o metoda, public void onCreate(Bundle savedInstanceState) {/*…*/}. Acesta este locul unde fereastra este creata; ignorati, deocamdata, paramentrul.

Cum arata aceasta metoda:

     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    }

Pe scurt, se apeleaza metoda onCreate din clasa parinte si apoi se initializeaza fereastra aplicatiei folosind XML-ul scris anterior: setContentView(R.layout.main);. R.layout.main este modul de a indica fisierul main.xml unde am definit UI.

Pentru a adauga functionalitate aplicatiei controalele existente trebuiesc accesate (identificate) si folosite. Pentru asta vom completa codul ca sa arate asa:

     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);

          final TextView txt = (TextView) findViewById(R.id.txtTitle);
          Button btn = (Button) findViewById(R.id.btnChange);

          btn.setOnClickListener(new OnClickListener() {

               public void onClick(View v) {
                    txt.setText(R.string.newText);
               }
          });
     }

findViewById(int id) – gaseste (sau returneaza null) un control dupa id-ul sau. Astfel gasim cele 2 controale adaugate, butonul si TextView-ul. Adaugam butonului un setOnClickListener, in inteiorul caruia modificam textul TextView-ului.

In episodul viitor vom discuta despre diversele fisiere existente in cadrul proiectului si, scopul principal, explicarea fisierului manifest (AndroidManifest.xml).

Multumesc pentru ca ati urmarit acest episod si astept comentarii despre acest episod, sugestii pentru imbunatatirea prezentarii, semnalare de greseli etc. Orice comentariu, la subiect, e binevenit si apreciat!

Category: Uncategorized
  • Claudiu says:

    Nu mai faci te rog un episod si cu baze de date (SQLite)?

    November 13, 2013 at 9:55 am
  • Iulian says:

    Aș dori și eu un episod cu baze de date SQLite…

    August 26, 2014 at 7:33 pm

Your email address will not be published. Required fields are marked *

*