Visita GenyMotion (Ottieni un emulatore)
Installazione Android Studio
Nella finestra di benvenuto Clic su Start New Android Studio Project.
Nella pagina "Configure your new project", Assegnare il nome al progetto.
La casella "Application Name" contiene il nome che apparirà agli utenti. Per questo progetto usare "MiaApp".
La casella "Company domain" Contiene un valore che verrà usato come suffisso per il nome del package.
Il "Package name" è il percorso del progetto. Questo nome deve essere univoco nell'insieme dei package installati.
La casella "Project location" contiene il percorso in cui verranno salvati tutti i file del progetto.
Premere il pulsante Next.
Nella scheda "Select the form factors your app will run on" spuntare la casella "Phone and Tablet".
Nella casella "Minimum SDK" selezionare "API 8: Android 2.2 (Froyo)".
Questa scelta influisce sulla possibilità di usare l'App su dispositivi meno recenti. Lasciare non spuntate le altre caselle. Premere Next.
Nella scheda "Add an activity to your project" selezionare "Blank Activity" e premere Next.
Nella scheda "Describe the new activity for your project" lasciare le scelte proposte e premere Finish.
Il progetto contiene un'applicazione di base "Hello World" con alcuni file di default riepilogati nella finestra del progetto.
Prima di procedere, esaminare i file elencati:
app/res/layout/activity_main.xml Questo file XML descrive il layout del file dell'activity del progetto. Nella sezione centrale della finestra, questo file è mostrato nella vista Anteprima (pulsante Design, nella parte inferiore) e nella vista Testo (pulsante Text nella parte inferiore). Il file comprende alcune impostazioni di default ed un elemento TextView che mostra il messaggio "Hello world!"
MainActivity.java Nell'area centrale c'è una scheda con la linguetta che riporta il nome di questo file. Aprendo questa scheda si può leggere la definizione della classe per questa activity. Quando l'applicazione verrà eseguita questa classe specifica le azioni da svolgere.
AndroidManifest.xml Il file manifest descrive le caratteristiche fondamentali dell'app e definisce tutti i suoi componenti.
app/build.gradle Lo strumento Gradle ha il compito di compilare e produrre il file dell'applicazione. Esiste un file build.gradle per ciascun modulo del progetto, e un file build.gradle per l'intero progetto. Di solito interessa solo il file build.gradle del modulo, in questo caso l'applicazione. In questo file vengono impostate le dipendenze per costruire l'applicazione, compreso defaultConfig, cioè:
compiledSdkVersion è la versione del compilatore. Per default, questo valore viene impostato sulla più recente versione di Android disponibile nell'SDK. (Dovrebbe essere Android 4.1; Se questa versione non ` disponibile, la si deve installare con l'SDK Manager.) Si può anche usare una versione più vecchia, ma la versione più recente offre le nuove funzionalità e produce un'applicazione ottimizzata.
applicationId è il nome del package.
minSdkVersion è la minima versione di SDK.
targetSdkVersion indica la più alta versione di Android con cui si è provata l'applicazione. Quando viene rilasciata una nuova versione di Android si dovrebbe verificare l'applicazione con questa nuova versione ed aggiornare questo valore.
La cartella res contiene Le risorse dell'applicazione:
drawable-hdpi/ Directory per oggetti grafici (bitmap) destinati a schermi high-density (hdpi). Le altre directory analoghe contengono oggetti per altre densità. Qui si troverà ic_launcher.png che compare quando si lancia l'applicazione di default.
layout/ La directory per i file che descrivono l'interfaccia grafica come, ad esempio, activity_main.xml.
values/ La directory per altri file XML che contiene le risorse, quali stringhe, colori, ecc. Il file strings.xml definisce la stringa "Hello world!" che viene mostrata quando si esegue l'app di default.
In questa lezione, si crea un layout in XML che comprende una casella di testo e un pulsante. Nella seconda parte della lezione si completerà l'app per rispondere all'evento touch sul pulsante e inviare il testo ad un'altra activity.
L'interfaccia grafica per un'app Android è costruita mediante una gerarchia di oggetti di classe View e ViewGroup. Gli oggetti di classe View sono gli elementi dell'interfaccia grafica (label, pulsanti, ecc.). Gli oggetti di classe ViewGroup sono contenitori non visibili che rappresentano le relazioni tra le viste e le loro disposizioni sul frame.
Android fornisce un dizionario XML che corrisponde alle sotto-classi delle classi View e ViewGroup in modo da poter definire la propria interfaccia grafica in XML.
I Layout sono sotto-classi di ViewGroup. In questo esempio si userà un LinearLayout.
In Android Studio, sfogliare la directory res/layout e aprire il file activity_main.xml.
Il modello BlankActivity che si è scelto al momento della creazione del progetto, contiene il file activity_main.xml con la vista RelativeLayout contenente una vista TextView. Nascondere il pannello Anteprima (Preview) facendo clic sulla relativa icona (oppure premere il pulsante jump to Source).
In Android Studio, quando si apre un layout, viene mostrata l'anteprima. In questa lezione si lavorerà direttamente sul file XML.
Cancellare l'elemento <TextView>.
Cambiare l'elemento <RelativeLayout> in <LinearLayout>.
aggiungere l'attributo android:orientation ed assegnargli il valore horizontal.
Cancellare tutti gli attributi android:padding e l'attributo tools:context.
Il risultato è il seguente:
res/layout/activity_my.xml
LinearLayout è una sotto-classe di ViewGroup che dispone gli elementi in orizzontale o in verticale, a seconda del valore assegnato all'attributo android:orientation. Ogni elemento inserito in un LinearLayout occupa la posizione relativa all'ordine in cui è specificato nel file XML.
Gli altri due attributi, android:layout_width e android:layout_height, sono obbligatori per tutte le viste.
Poichè il LinearLayout è la vista di livello superiore nel layout, occuperà l'intera area dello schermo avendo impostato larghezza ed altezza a match_parent. Questo valore impone che alla vista venga riservato tutto lo spazio dello schermo.
Specificare le proprietà della casella di testo nel file XML.
Nel file activity_main.xml, nell'elemento <LinearLayout>, definire un elemento <EditText> assegnando all'attributo id il valore @+id/edit_message.
Assegnare agli attributi layout_width e layout_height il valore wrap_content.
Definire un attribuo hint come oggetto di tipo stringa ed assegnargli il valore edit_message
A questo punto l'elemento <EditText> dovrebbe apparire come segue:
res/layout/activity_my.xml
Un oggetto resource è un numero intero univoco associato ad una risorsa, come un file di tipo bitmap, un file di layout, o una stringa. Ogni risorsa ha un corrispondente oggetto definito nel file del progetto gen/R.java. Si possono usare i nomi degli oggetti nella classe R per far riferimento alle risorse, ad esempio come quando si specifica il valore di una stringa per l'attributo android:hint. Si possono anche creare ID di risorse arbitrari che si associano ad una vista mediante l'attributo android:id, che consente di far riferiemnto ad una vista.
SDK genera il file R.java ogni volta che si compila l'app. Questo file non deve essere mai modificato manualmente.
Il riepilogo degli attributi aggiunti all'elemento <EditText> è il seguente:
android:id
Fornisce un identificatore univoco per la vista, che serve per fare riferimento all'oggetto, ad esempio per leggere e modificare l'oggetto.
Il carattere @ è obbligatorio quando si fa riferimento ad una risorsa dal file XML. È seguito dal tipo della risorsa (id in questo caso),
da uno slash, e poi dal nome della risorsa (edit_message).
Il segno + perima del tipo della risorsa è obbligatorio solo quando una risorsa viene definita per la prima volta.
Quando si compila l'app, l'SDK usa l'ID per creare un nuovo ID di risorsa nel file gen/R.java del progetto che si riferisce all'elemento EditText.
Con l'ID di risorsa, dichiarato in questo modo, gli altri riferimenti all'ID non richiedono il segno +.
android:layout_width e android:layout_height
Invece di usare dimensioni esatte per la larghezza e l'altezza dell'elemento, viene specificato il valore "wrap_content" per indicare che
la vista deve avere le dimensioni necessarie a contenere gli elementi. Se si fosse usato il valore "match_parent", allora l'elemento EditText
avrebbe occupato l'intero schermo, perchè è contenuto in un elemento LinearLayout.
android:hint
È la stringa da mostrare quando la casella di testo è vuota.
Invece di usare una stringa costante, il valore "@string/edit_message" si riferisce ad una risorsa di tipo stringa definita in un file separato.
Poichè questo valore rappresenta il riferimento ad una risorsa (non ad un identificatore), non è richiesto il segno +.
Siccome non è stata ancora definita la risorsa stringa, viene segnalato un errore di compilazione.
Questo errore verrà corretto nella prossima sezione definendo la stringa.
Nota: questa stringa ha lo stesso nome dell'ID dell'elemento: edit_message. I riferimenti alle risorse hanno sempre una regione di visibilità quindi non nasce nessun conflitto.
Per default, il progetto include un file di risorse res/values/strings.xml. In questo si aggiunge la nuova stringa con nome "edit_message" e il valore verrà impostato a "Scrivi un messaggio."
Nella finestra del progetto di Android Studio, nella cartella res/values, aprire strings.xml.
Aggiungere una linea per una stringa denominata "edit_message" e assegnarle il valore "Scrivi un messaggio".
Inserire una linea per la stringa denominata "button_send" con il valore "Invia".
Cancellare la linea della stringa "hello world".
Il file strings.xml dovrebbe essere il seguente:
res/values/strings.xml
Il testo da mostrare nell'interfaccia utente deve essere sempre specificato come una risorsa di tipo stringa. Le risorse di tipo stringa consentono di gestire tutto il testo nell'interfaccia grafica da una sola posizione, significa che è più facile trovare e modificare il testo. Inoltre l'app può essere perfezionata per presentare il testo in varie lingue.
Nella cartella In Android Studio, modificare il file activity_main.xml
.All'interno dell'elemento <LinearLayout> definire un elemento <Button> subito dopo l'elemento <EditText>.
Agli attributi width ed height del pulsante assegnare il valore "wrap_content" in modo che il pulsante sia grande quanto basta per viualizzare il testo.
Definire il testo del pulsante assegnamdo all'attributo android:text il valore della stringa di risorsa button_send.
L'elemento <LinearLayout> dovrebbe essere definito come segue:
res/layout/activity_my.xml
Nota: questo pulsante non richiede l'attributo android:id, perchè non sarà riferito dall'activity.
Il layout, fino a questo punto, è progettato in modo che sia la casella di testo sia il pulsante si adattino al contenuto.
Questa scelta è corretta per il pulsante, ma non per la casella di testo, perchè l'utente potrebbe scrivere un testo più lungo. Per allargare la casella di testo, per coprire la restante parte vuta dello schermo, modificare la proprietà weight dell'elemento LinearLayout.
Il valore numerico di weight specifica la quantità di spazio restante che una vista consuma, rispetto allo spazio occupato dalle viste di pari livello.
Ad esempio, se a una vista si da peso 2 e ad un'altra peso 1, quindi la somma è 3, la prima vista riempie i 2/3 dello spazio restante e la seconda vista occupa il resto. Se si aggiunge una terza vista e le si assegna il peso 1, allora la prima vista occupa la metà dello spazio restante, mentre le altre due viste ne consumano 1/4.
Il peso di default per tutte le viste è 0, così che ogni valore weight maggiore di 0 a solo una vista assegna a quella sola vista tutto lo spazio restante, dopo che tutte le viste hhanno consumato lo spazio richiesto.
Per riempire lo spazio nel layout con l'elemento EditText:
Nel file activity_main.xml, assegnare il valore 1 all'attributo layout_weight dell'elemento <EditText>.
Inoltre, assegnare il valore 0dp all'attributo layout_width dell'elemento <EditText>.
res/layout/activity_main.xml
Per migliorare l'efficienza del layout, quando si specifica il peso, si deve modificare la larghezza dell'elemento EditText a zero (0dp). Poichè si è usato "wrap_content", il sistema non ha nessuno spazio da calcolare.
Il file activity_main.xml è il seguente:
res/layout/activity_my.xml
Eseguire l'applicazione scegliendo la voce Run nel menu Run.
Nota: Se l'emulatore non si avvia (sotto Windows)
Aprire AVD Manager.
Selezionare il telefono e aprire la scheda di editing (premendo l'icona della matita).
Premere il pulsante Advanced e fissare la quantità di RAM a 768 MB.
Premere il pulsante Finish.