Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

C'è sempre maggiore richiesta di sviluppatori Android. A sostenerlo è anche Freelancer.
Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

C’è sempre maggiore richiesta di sviluppatori Android. A sostenerlo è anche Freelancer.com, sito web che offre un quadro dettagliato sulle professioni emergenti nel mondo dell’IT.
I professionisti in possesso delle competenze necessarie per programmare su Android sono sempre più ricercati. Nel corso del 2013 Android ha superato Apple iOS per ciò che riguarda la richiesta di sviluppatori ed il trend sembra confermarsi in aumento anche quest’anno.

Lo strumento migliore per iniziare a sviluppare applicazioni professionali per Android è senza dubbio il pacchetto Android SDK, distribuito e costantemente aggiornato da Google.

Per iniziare a programmare applicazioni Android due sono i requisiti software indispensabili:

1) Il pacchetto Java Development Kit (JDK), prelevabile da questa pagina (sito web di Oracle).
Attenzione a non scaricare ed installare il pacchetto JRE: ciò che serve è il Java Development Kit (abbreviato JDK).
Al momento, con le attuali versioni dell’Android SDK, il nostro consiglio è quello di scaricare ed installare sul sistema l’ultima versione del pacchetto JDK 7.0 cliccando sul pulsante DOWNLOAD in corrispondenza della voce JDK, al paragrafo Java SE 7uXX, in questa pagina.

Dopo l’installazione del pacchetto Java JDK

Quando si installa Java è bene tenere presenti alcuni punti fondamentali. In primo luogo, la piattaforma Java deve essere mantenuta sempre aggiornata per evitare che eventuali vulnerabilità possano essere sfruttate, da parte di aggressori, per causare danni. In seconda battuta, se non si fosse interessati ad eseguire le applet Java dal browser web, sarebbe opportuno disattivare questa possibilità.
A tal proposito, suggeriamo di documentarvi facendo riferimento all’articolo Java è sicuro? Come difendersi dalle minacce più recenti.

2) L’Android SDK, il prodotto che consente di realizzare applicazioni per il sistema operativo mobile targato Google contenente il debugger, le librerie, un emulatore, il codice d’esempio e la documentazione. Il pacchetto SDK è scaricabile gratuitamente da questa pagina.

L’Android SDK è un pacchetto che non necessita d’installazione: è sufficiente estrarre il contenuto dell’archivio compresso in una cartella su disco (ad esempio C:\Android SDK) e fare doppio clic sul file SDK Manager.exe.
L’importante è eseguire Android SDK solamente dopo aver completato l’installazione del pacchetto Java JDK; in caso contrario, l’applicazione SDK Manager.exe non si avvierà.

IMPORTANTELe nozioni di base per programmare su Android usando l’Android SDK

In questo articolo daremo per scontati i concetti e le procedure già illustrati nei seguenti articoli:
Programmare Android: creare applicazioni partendo da zero con Android SDK ed Eclipse
Creare applicazioni Android: anatomia di una app, le attività, creazione di finestre di dialogo

Il primo articolo, che vi invitiamo a rileggere, contiene tutti i suggerimenti per utilizzare l’ambiente di sviluppo Eclipse nonché per configurare ed avviare il dispositivo virtuale Android che servirà per provare le app in fase di sviluppo.

Dopo aver creato da zero un nuovo progetto “CiaoMondo” in Eclipse (fare riferimento all’articolo Programmare Android: creare applicazioni partendo da zero con Android SDK ed Eclipse per le istruzioni), cliccando con il tasto destro del mouse sul nome del progetto (nel nostro caso, CiaoMondo) nella scheda Package explorer quindi scegliendo Run As, Android application, l’app Android di prova, appena creata, dovrebbe essere immediatamente eseguita nel dispositivo virtuale.

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

Dopo alcuni secondi di attesa, l’app di test verrà eseguita nel dispositivo virtuale Android creato in precedenza ed esporrà solamente il messaggio “Hello world“:

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

A questo punto, senza chiudere la finestra dell’emulatore Android, si potrà tornare sulla finestra di lavoro di Eclipse.

Dal Package explorer, cliccando su res\layout quindi facendo doppio clic sul file fragment_ciao_mondo.xml, verrà visualizzata un’anteprima dell’aspetto grafico dell’interfaccia dell’applicazione.

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

In Eclipse, infatti, per impostazione predefinita si accede sempre all’editor visuale (Graphical layout). Si tratta di uno strumento che permette di sviluppare app Android utilizzando un editor WYSIWYG (What you see is what you get).

Nel nostro caso, tuttavia, ci serviremo della scheda contenente il codice XML: anziché utilizzare l’editor grafico, insomma, lavoreremo direttamente sul codice.
Per accedere al codice XML, quindi, è necessario cliccare sulla scheda fragment_ciao_mondo.xml, a destra di Graphical layout.

Qui, eliminando il codice XML che inizia con <TextView e finisce con />, si rimuoverà la stringa “Hello world” vista in precedenza nella schermata principale dell’applicazione Android.

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

Se si proverà infatti a rieseguire l’app Android nel dispositivo virtuale (tasto destro sul nome del progetto, Run As, Android application), questa volta si otterrà una schermata completamente bianca.

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

Proviamo a questo punto ad inserire una casella di testo nell’app Android in fase di sviluppo.

<EditText android:id="@+id/edit_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />

Il codice sopra riportato dev’essere inserito all’interno della scheda fragment_ciao_mondo.xml:

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

La casella di testo viene creata utilizzando alcuni attributi (android:id, android:layout_width, android:layout_height e android:hint) che sono usati per definire alcune caratteristiche dell’oggetto appena inserito.

L’attributo android:id, ad esempio, permette di assegnare un identificativo univoco alla casella di testa appena creata che servirà poi per leggere e modificarne il contenuto.
Il segno “+” viene utilizzato solo per definire un identificativo di risorsa per la prima volta. Il nome della risorsa è quello che segue la barra ed in questo caso è edit_message.

I successivi due attributi (android:layout_width, android:layout_height) consentono di stabilire le dimensioni della casella di testo. Il valore wrap_content fa sì che l’oggetto sia largo ed alto a sufficenza per ospitare i contenuti.

L’attributo android:hint, invece, consente di impostare il testo da visualizzare quando la casella è vuota. La sintassi @string/ permette di riferirsi, come abbiamo già visto nell’articolo Creare applicazioni Android: anatomia di una app, le attività, creazione di finestre di dialogo, al contenuto della stringa edit_message definita nel file values\strings.xml.

Nonostante si sia utilizzato lo stesso nome edit_message come ID e come riferimento ad una stringa, non si creerà alcun conflitto perché nei due casi è chiaramente specificato un tipo di risorsa differente (id e string).

Cliccando due volte su values\strings.xml, si potranno aggiungere i riferimenti alle stringhe utilizzate nell’app Android in corso di sviluppo:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">CiaoMondo</string>
    <string name="action_settings">Impostazioni</string>
    <string name="edit_message">Inserisci messaggio</string>
    <string name="button_send">Invia</string>
    <string name="title_activity_main">MainActivity</string>
</resources>

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

Come si vede, il codice XML appena inserito nel file values\strings.xml consente di definire il valore della stringa edit_message ma anche di una serie di stringhe aggiuntive, alcune delle quali verranno impiegate più avanti.

Ad esempio, tornando nel codice XML di fragment_ciao_mondo.xml, dopo la casella di testo EditText, si può aggiungere un pulsante (Button):

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />

Come si vede, il testo del pulsante viene impostato facendo riferimento alla stringa button_send, già precedentemente definita nel file values\strings.xml.

Creazione di una nuova attività. L'”intent” come collante

A questo punto, affinché i due elementi risultino perfettamente allineati (diversamente appariranno sovrapposti), è necessario modificare, nel codice XML, la tag RelativeLayout sostituendo al suo posto LinearLayout:

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

Per fare in modo che la casella di testo occupi tutto lo spazio disponibile in orizzontale, si può utilizzare i seguenti attributi all’interno della tag EditText:

android:layout_weight="1"
android:layout_width="0dp"

Riavviando l’applicazione nel dispsitivo virtuale Android, si otterrà quanto segue:

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

Eseguire un’attività al momento della pressione del pulsante

Con l’aggiunta dell’attributo android:onClick nella tag Button, è possibile “intercettare” l’evento onClick che si presenta ogniqualvolta l’utente dell’applicazione Android faccia clic sul pulsante Invia.

Entro la tag XML Button, quindi, si aggiunga l’attributo seguente:

android:onClick="sendMessage"

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

In questo modo, ogni volta che si verificherà l’evento onClick, l’app Android provvederà ad invocare il metodo sendMessage.

Facendo clic due volte sulla classe CiaoMondoActivity contenuta in \src (finestra Package explorer), si dovrà aggiungere il metodo sendMessage:

public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

L’intent è un oggetto che funge da collante e che permette quindi alle varie attività di operare in maniera coordinata. Un intent, inoltre, non consente soltanto di aprire una nuova attività ma di trasmettere un insieme di dati a tale nuova attività, all’interno dell’app Android.

In testa alla classe CiaoMondoActivity dovrà essere obbligatoriamente importata la classe Intent.
Affinché sia Eclipse ad aggiungere automaticamente la riga import, è possibile servirsi dell’utilissima combinazione di tasti CTRL+MAIUSC+O.

Il riferimento alla classe DisplayMessageActivity obbligherà Eclipse a mostrare un messaggio d’errore (DisplayMessageActivity cannot be resolved to a type) perché la stessa classe ancora non esiste.
Analogo errore sarà presentato nel caso della costante EXTRA_MESSAGE, anch’essa da definire.
La comparsa dei due errori, comunque, è assolutamente normale: provvederemo a risolvere a breve la questione.

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

Intanto, cominciamo con l’evidenziare come la funzione findViewByID() consenta di recuperare la casella di testo EditText il cui contenuto, poi, sarà trasmesso alla nuova attività usando l’intent ed il metodo putExtra().

La seguente stringa consentirà di definire la costante EXTRA_MESSAGE e risolvere uno dei due errori:

public final static String EXTRA_MESSAGE = "com.ciaomondo.MESSAGE";

A questo punto, per risolvere anche il secondo errore, quello relativo all’assenza della classe DisplayMessageActivity, bisognerà provvedere a crearla cliccando sul primo pulsante della barra degli strumenti di Eclipse (New) e scegliendo Android, Android activity.

Dopo aver fatto clic sul pulsante Next, si selezionerà Blank Activity quindi si imposterà la finestra seguente così come in figura:

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

Il titolo dell’attività appena aggiunta viene automaticamente inserito da Eclipse nel file values\strings.xml:

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

Allo stesso modo, Eclipse inserisce automaticamente tutti i riferimenti relativi alle attività aggiunte all’interno del file AndroidManifest.xml.

A questo punto, facendo doppio clic sul file DisplayMessageActivity contenuto all’interno di \src (finestra Package explorer), si troveranno i metodi appartenenti alla classe appena aggiunta.

Si modifichi quindi il contenuto del metodo onCreate() (viene automaticamente invocato all’apertura dell’attività) specificando quanto segue:

    super.onCreate(savedInstanceState);

    // Ricevi messaggio dall'intent
    Intent intent = getIntent();
    String message = intent.getStringExtra(CiaoMondoActivity.EXTRA_MESSAGE);
    // Crea l'etichetta di testo
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    setContentView(textView);

Infine, si prema la combinazione di tasti CTRL+MAIUSC+O per inserire gli import necessari.

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

È ora possibile riavviare nuovamente l’applicazione Android nel dispositivo virtuale.
Questa volta, cliccando sul pulsante Invia, l’app Android provvederà ad aprire una nuova attività visualizzando la stringa di caratteri inserita dall’utente nella casella di testo.

Programmare Android, sviluppare un'applicazione che risponde all'input dell'utente

In caso di dubbi, sentitevi pure liberi di inviarci dei quesiti attraverso un commento in calce all’articolo.

Ti consigliamo anche

Link copiato negli appunti