Sviluppare app per Android, non è semplice come lo si crede, servono righe su righe di codice, e conoscere bene la programmazione ad oggetti, conoscere come usare librerie e come gestire errori ed eccezioni varie sotto Java, in questi articoli verranno illustrate le guide a partire dalla base, e con esempi a scopo istruttivo, quindi non realizzeremo una app molto sofisticata, solo app per imparare la programmazione
Per iniziare quindi apriamo il nostro Eclipse, o il nostro IDE preferito su cui abbiamo precedentemente installato la nostra SDK, o magari tramite Android-Studio, su cui ricordiamo che è già installata e creiamo un nuovo progetto tramite l’apposito bottone .
Per prima cosa vi è la necessità come detto in precedenza di conoscere un pò di Java, quindi se siete completamente a digiuno di programmazione armiamoci di pazienza, e cerchiamo una delle tante guide che spiegano tale linguaggio, altrimenti sarebbe estremamente dispendioso spiegare un’intero linguaggio di programmazione in un singolo articolo.
Se sappiamo almeno la base del Java e della programmazione ad oggetti allora potremo procedere direttamente alla guida vera e propria.
Per prima cosa analizziamo una classica applicazione Android,essa si compone di varie parti, che ci vengono imposte al fine di obbligarci a progettare applicazioni di qualità elevata, in modo da non diffondere app dannose, o che potrebbero risultare poco stabili o inutilizzabili, ma anche per permettere una compatibilità massima con tutti i device che hanno Android.
Per prima cosa dobbiamo analizzare il AndroidManifest.xml, esso, come dice l’estensione è un file XML, ossia un file di informazioni, che ci permette di dare solo determinati permessi alla nostra app, o semplicemente per configurare i suoi singoli aspetti, come orientazione dello schermo, permessi di accesso ad internet, scrittura in memoria o modificare file.
Ecco come è strutturato:
<manifest xmlns:android="https://schemas.android.com/apk/res/android" ... > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> ... </manifest>
res/ci rappresenta tutte le sottodirectory contenute
rawable-hdpi/ che contiene immagini o layout
layout/ dove si trovano i layout della nostra interfaccia grafica
values/ contiene tutti i valori aggiuntivi come stringhe di formattazione o altroAltri campi, per ora non sono importanti ma verranno ripresi in seguito.
Come primo esempio, tratteremo la cosa più semplice di tutte, ossia la costruzione di una interfaccia grafica, con un messaggio al centro dello schermo, sembra banale, ma questa è l’operazione che si fa più spesso in qualsiasi app Android.
Innanzitutto va preso in considerazione un così chiamato UML, che ci spiega le regole di derivazione dei vari componenti della così chiamata GUI.
l’immagine precedente ci da una piccola indicazione su come vengono ereditati i vari componenti che caratterizzano la GUI, le ViewGroup sono dei layout, mentre le View sono i componenti, e ogni componente deve far parte di un layout per essere presente nella activity.Un layout molto semplice è il LinearLayout, che consente di inserire elementi allineati, orizzontalmente o verticalmente (a scelta del programmatore) nella applicazione, questo layout è però poco versatile, in quanto molto molto statico, e una combinazione di più layout ci porta alla fine al nostro scopo, ossia ottenere una GUI esattamente conforme alle nostre esigenze.
Il codice XML per ottenere il LinearLayout è:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > </LinearLayout> >
Da notare che è stato lasciato dello spazio vuoto, in quello spazio vuoto vanno inseriti i componenti, questo codice va inserito ovviamente all’interno di un file XML, per strutturare la grafica dell’activity, e precisamente in un file di Layout della stessa, in realtà questo codice è l’activity in se per se dato che il codice della parte logica dovrà interagira esclusivamente con esso (e buona norma tenere separati logica e grafica!).
Qualche riga fa abbiamo parlato dello spazio bianco lasciato intenzionalmente all’interno del layout, ebbene li va uno o più componenti, quali ad esempio una TextView che non fa altro che prendere da input una stringa e farne ciò che decide la logica:
<EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" />
quindi otteniamo:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="scrivi qualcosa" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" /> </LinearLayout>
in cui android:id sta per l’id, ossia un nome univoco per identificare il componente
android:layout_width/height sta per la grandezza in pixe, in questo caso abbiamo scelto automatica in base allo spazio
e android:hint sta per il testo di default che scompare al click.
Abbiamo inoltre aggiunto un bottone, la cui sintassi è identica, con la differenza che android:text è il testo che ovviamente comparirà sul bottone.
Una volta fatto tutto ciò, ci basterà premere su Eclipse, oppure su Android-Studio il bottone .
E noteremo che se abbiamo configurato bene seguendo la guida sull’installazione della SDK si lancerà una macchina virtuale con all’interno Android e una volta completato il tutto avremo la nostra bella apk installata e pronta per l’uso.
Ovviamente se funzionerà qui, possiamo anche esportarla e installarla sul dispositivo fisico, per fare qui in Eclipse, ci basterà andare in “file->esporta->Android->APK” riempire con tutte le opzioni i form e inviare la apk generata al dispositivo.