sabato 5 luglio 2008

Ciao mondo in salsa Android

La solita prima applicazione, però vederla sul simulatore del GPhone da una certa soddisfazione.

La prima versione con l'interfaccia implementata in modo programmatico:

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class primaApp extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
TextView tv= new TextView(this);
tv.setText("Ciao!");
setContentView(tv);
}
}


Una delle cose più interessanti è che la User Interface può essere definita anche in modo dichiarativo tramite un file xml:

<linearlayout android="http://schemas.android.com/apk/res/android" orientation="vertical" layout_width="fill_parent" layout_height="fill_parent"></linearlayout></span>

<textview android="http://schemas.android.com/apk/res/android" layout_width="fill_parent" layout_height="fill_parent" text="Ciao!"></textview>

Quindi piccole modifiche alla grafica possono essere fatte senza dover rifare molto codice ;-)

La "activity" diventa anche più semplice:

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

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

}
}


Ogni applicazione Android è composta da 4 blocchi base:

Activity
Intent Receiver
Service
Content Provider


Activity: è il blocco più comune, si può immaginare con una singola schermata e viene implementata in una singola classe che estende la classe base Activity. Quando una nuova schermata comincia la precedente viene messa nella History e fermata. Ogni schermata può ritornare dei valori alla schermata chiamante. Android prevede l'utilizzo di classi speciali per passare da un'activity ad un'altra, queste classi vengono chiamate Intent. Gli Intent sono una richiesta di fare qualcosa, esistono poi gli IntentFilter che invece rappresentano la descrizione di cosa un'attività è in grado di fare o meglio di quali eventi è in grado di catturare.

Intent Receiver: è il codice che viene eseguito in risposta ad un evento esterno, ad esempio una chiamta telefonica. Non mostra una User Interface ma può chiamare il NotifyManager per avvertire l'utente che è avvenuto qualcosa di importante.

Service: i servizi sono codice che viene eseguito anche per tempi lunghi e che girano anche senza un'interfaccia grafica. Un esempio potrebbe essere un media player: il player in sè può girare senza UI esponendo le funzioni principali tramite un interfaccia.

Content Provider: serve per condividere i dati tra applicazioni diverse. Quindi il Content Provider è una classe che espone i metodi per l'accesso ai dati.

Nessun commento: