Fondamenti di sviluppo mobile su Android



Похожие документы
Corso Corso di di programmazione di di sistemi mobile 1 1. Android Laboratorio. Primo Progetto, Toast

Android. Implementare una interfaccia utente

Tale attività non è descritta in questa dispensa

Guida all uso delle Web View su ios

Android. Android03: Ciclo di vita di una Activity.

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Basi Android. Android si definisce open. Con8ene tecnologie open source. Il codice di Android è open. Licenza Open Source Apache 2.

Integrazione InfiniteCRM - MailUp

Sistemi Mobili e Wireless Android Primi passi

Manuale Utente MyFastPage

MANUALE D USO DELLA PIATTAFORMA ITCMS

MagiCum S.r.l. Progetto Inno-School

Veneto Lavoro via Ca' Marcello 67/b, Venezia-Mestre tel.: 041/

BDCC : Guida rapida all utilizzo

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Ciclo di vita delle aevità Android Mobile Programming Prof. R. De Prisco

Introduzione. Installare EMAS Logo Generator

1. Il Client Skype for Business

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

5.6.1 REPORT, ESPORTAZIONE DI DATI

Android. Android. Sviluppo di applicazioni. Dalvik 19/03/2011. A. Ferrari

Client - Server. Client Web: il BROWSER

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

Eclipse - Nozioni Base

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Esercitazione n. 10: HTML e primo sito web

Guida all uso di Java Diagrammi ER

ARCHIVIA PLUS - ARCHIFILE

Manuale per i redattori del sito web OttoInforma

IRSplit. Istruzioni d uso 07/10-01 PC

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

Come usare P-touch Transfer Manager

SPORTELLO UNICO DELLE ATTIVITÀ PRODUTTIVE MANUALE OPERATIVO FUNZIONI DI PAGAMENTO ONLINE. Versione 05

Manuale Terminal Manager 2.0

Tecniche di progettazione e sviluppo di applicazioni mobile

SW Legge 28/98 Sommario

Guida alla registrazione on-line di un NovaSun Log

L ambiente di sviluppo Android Studio

MANUALE EDICOLA 04.05

Monitor Orientamento. Manuale Utente

INDICE. IL CENTRO ATTIVITÀ... 3 I MODULI... 6 IL MY CLOUD ANASTASIS... 8 Il menu IMPORTA... 8 I COMANDI DEL DOCUMENTO...

Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento.

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

Il calendario di Windows Vista

Installazione e caratteristiche generali 1

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

PRODUZIONE PAGELLE IN FORMATO PDF

Le presenti note vengono rilasciate per presentare le principali novità della release 2010 Sp1 di Contact Pro.

Breve guida a Linux Mint

CdL in Medicina Veterinaria - STPA AA

Introduzione all uso di Eclipse

Il web server Apache Lezione n. 3. Introduzione

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Corso Eclipse. Prerequisiti. 1 Introduzione

Utilizzo della APP IrriframeVoice. Versione 1.0 maggio 2015

Manuale Gestore. STWS Web Energy Control - Servizio di telelettura sul WEB

Procedura SMS. Manuale Utente

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Accreditamento Soggetti Formatori in materia di Sicurezza sul Lavoro

GUIDA STUDENTI HOMEPAGE DEI CORSI ON-LINE

GUIDA UTENTE BILLIARDS COUNTER (Vers )

Manuale Utente 1 Ultimo aggiornamento: 2015/12/22 ifatt

POSTA ELETTRONICA Per ricevere ed inviare posta occorrono:

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Relazioni tra tabelle

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

14/10/2015 ALESSANDRAZULLO SVILUPPO DI APPLICAZIONI ANDROID- VERSIONE 1. Alessandra Zullo

BLOCK CALL Manuale utente Block Call Manuale Utente

GUIDA UTENTE MONEY TRANSFER MANAGER

BMSO1001. Orchestrator. Istruzioni d uso 02/10-01 PC

Cosa è un foglio elettronico

Gestione Risorse Umane Web. Gestione della foto in stampa unione. Versione V01

Il Programma... 3 I moduli... 3 Installazione... 3 La finestra di Login... 4 La suite dei programmi... 6 Pannello voci... 10

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

I.N.A.I.L. Certificati Medici via Internet. Manuale utente

Manuale LiveBox APPLICAZIONE ANDROID.

Manuale LiveBox WEB ADMIN.

PORTALE CLIENTI Manuale utente

3 Gestione e stampa casse edili

CONTROLLO DI GESTIONE DELLO STUDIO

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

GUIDA. Redazione Portale. Manuale operativo per la creazione contenuti da pubblicare sul portale Autorità Portuale del Levante

R.O.A.S. Roll Out Alpitel System

2015 PERIODO D IMPOSTA

Android. Intent e intent-filter. diegozabot@yahoo.it

Android. Anatomia di una applicazione

Installazione del software Fiery per Windows e Macintosh

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo

Corso di programmazione di sistemi mobile 1. Android. Google Cloud Messaging

Corso di Informatica. Immissione di dati. Visualizzazione come foglio dati 1. Visualizzazione come foglio dati 2 11/01/2008

START Easy GO! Il gestionale sempre in tasca! Procedura di aggiornamento. Documentazione utente Pagina 1 di 18

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

Utilizzo di Blue s. Avvio di Blue s C A P I T O L O 7. Come avviare il programma e inserire la password

Транскрипт:

Fondamenti di sviluppo mobile su Android Dott. A. Tedeschi antonio.tedeschi@uniroma3.it Corso di Telecomunicazioni Wireless a.a. 2015-2016 1

Outline Fondamenti di programmazione Android Creare un nuovo progetto Struttura del progetto Struttura di un file apk Activity lifecycle Intent e la comunicazione tra activity e applicazioni Emulatore A. Tedeschi 2013/2014 2

DEMO Demo 3

Android: La prima app Recap Creazione di un nuovo progetto Android Studio -> Start a new Android Studio project 4

Android: La prima app 5

Android: La prima app 6

Android: La prima app 7

Android: La prima app 8

Android: La prima app Recap Creazione di un nuovo progetto: Android Studio -> Start a new Android Studio project Impostare opportunamente: I nomi dell app, del progetto e in particolare del package(!). NOTA com.example.name è il nome di default del package è consigliabile cambiarlo La versione minima e target delle API. Ciò permette di definire la retrocompatibilità di un app e le API che possono essere adottate. 9

Android: Struttura del progetto Organizzazione del progetto e struttura dei file Android Studio propone diverse view come accade per Eclipse ognuna delle quali ci permette di visualizzare un determinato set cartelle e dati Di default, alla creazione di un nuovo progetto viene mostrata la vista Android project view, che: mostra una versione ridotta del progetto mostrando solo i file e le cartelle principali Raggruppa i file di build per tutti i moduli in un unica cartella Raggruppa i file di manifest per ogni modulo in un unica cartella Android Studio permette la gestione dei Moduli, che possono essere applicazioni (mobile devices, TV, ), librerie e test 10

Android: Struttura del progetto gradle Si tratta di un prodotto di build automation diffuso nel mondo Java. L omonima cartella contiene i gradler-wrapper file.idea È la cartella in cui sono memorizzati i setting di IntelliJ IDEA Nota: Android Studio si basa su IntelliJ External Libraries Contiene al suo interno un set di librerie necessarie per lo sviluppo dell app. appcompat_v7 Libreria di supporto auto-importata alla creazione di un progetto in cui si crea un nuovo progetto Permette retrocompatibilità di elementi presenti nelle recenti versioni, come ActionBar, utilizzabili dalla versione 2.1 e superiori support-v4.jar permette l utilizzo dei fragment dalla versione 1.6 e superiori (info) design-23.1.0 libreria di supporto per la definizione di alcuni elementi material design 11

Android: Struttura del progetto build Memorizza l output della compilazione di tutti i moduli del progetto build.grade Permette di customizzare le proprietà per la compilazione del sistema. Possibile usare le impostazioni di default gradlew e gradlew.bat Startup script del gradel per i sistemi Unix e Windows, rispettivamente local.properties Permette di settare le proprietà specifiche del calcolatore per fare la build del sistema, ad esempio il path della SDK installata..iml File del modulo creato da IntelliJ IDEA per memorizzare le informazioni sul modulo settings.gradle Specifica i sotto-progetti da compilare 12

Android: Struttura del progetto assets Cartella base vuota È possibile utilizzarla per integrare nell applicazione risorse primarie, come: font custom, database sqlite per lo storage dei dati, molteplici tipologie di file da utilizzare nell applicazione. Possibile navigare questa cartella come un file system attraverso l AssetManager Tale cartella non è inserita di default nella creazione del progetto, va aggiunta manualmente (tasto destro sul nome del progetto -> New -> Folders -> Assets Folder output Directory di output della compilazione Al suo interno è presente il file.apk ottenuto dalla compilazione del codice e delle risorse comprese quelle contenute in assets libs Cartella in cui è consigliato inserire le librerie private che varranno impiegate nell applicazione 13

Android: Struttura del progetto Classe responsabile della Grafica public static final class drawable { public static final int ic_launcher = 0x7f020000; } «Oggetto» grafico che si vuole rappresentare Valore numerico univoco che identifica «l oggetto» Senza questo file Android non sarebbe in grado di effettuare le associazioni tra gli elementi che compongono l activity dal punto di vista grafico (layout, immagini, bottoni, ) e il codice Java dell activity stessa. R.java non va MAI modificato manualmente! È compito del compilatore aggiungere o rimuovere classi o attributi. Quando si importa un progetto è possibile che questo file non sia presente o non venga generato correttamente -> fare Clean & Build del progetto manualmente 14

Android: Struttura del progetto app Contiene il sorgente dell applicazione non solo in termini di codice Java ma anche di gestione delle risorse AndroidManifest.xml Generato automaticamente alla creazione del progetto Permette la definizione: delle Activity per renderle utilizzabili dal sistema nome dell applicazione dei permessi, come accesso ad internet, localizzazione, etc 15

Android Manifest How to Definire una activity in portrait <activity android:name="it.sp4te.mainactivity" android:screenorientation="portrait" /> Impostare una activity come principale <activity android:name="it.roma3.droidbike.splashactivity" android:screenorientation="portrait" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> Aggiungere un permesso <uses-permission android:name="android.permission.internet" /> 16

Android: Struttura del progetto Java codice sorgente come le Activity logica di business dell applicazione res Contiene diverse tipologie di risorse, quali immagini, layout, file xml per definire le stringhe statiche, animazioni, ecc. Gradle Scripts Al suo interno ci sono due file build.gradle: uno generale per tutto il progetto ed uno più specifico per ogni modulo che stiamo sviluppando build.gradle (Module: app) contiene al suo interno le dipendenze e le configurazioni di default dell app. Ad esempio: minsdkversion, targetversion, versioncode. NOTA: queste informazioni sono state rimosse dall AndroidManifest alleggerendolo 17

Android: Struttura del progetto drawable-layout sono le cartelle in cui inserire la grafica in base alla qualità dello schermo che si desidera supportare. Se la grafica non è definita per ogni risoluzione, Android effettuerà il resize automatico a partire dalla risoluzione più vicina a quella che deve essere finita. Possibili effetti collaterali come immagini sgranate o troppo piccole Le cartelle drawable a diverse risoluzioni non sono create di default, ma possono essere create values: contiene diversi file xml per la definizione stile dell applicazione (style.xml) dimensioni di margini dei layout, widget (es. TextView) o font (dimens.xml) definizione delle stringe statiche della applicazione in una lingua di base scelta (string.xml) 18

Android: Struttura del progetto anim Contiene file XML per la creazione e gestione delle animazioni color se necessario è possibile specificare colori non standard non offerti da Android xml Insieme di file XML che possono essere utili per la configurazione di alcuni componenti dell applicazione mipmap è la cartella per le icone dell app e permette al sistema di scegliere in base alla risoluzione del dispositivo l icona opportuna. Rimpiazza la cartella drawable per le icone raw Alternativa alla cartella assets. I file contenuti sono gestiti dall Android Asset Packaging Tool 19

Android: Struttura del progetto layout: contiene un insieme di file XML che rappresentano l interfaccia grafica dell applicazione. Attenzione layout permette la gestione della grafica dell applicazione ma spesso è necessarie creare ulteriori cartelle dal nome layout- RISOLUZIONE per gestire opportunamente una data risoluzione. menu Contiene un insieme di file XML relativi ai menu impiegati nelle singole activity dell applicazione. Prende il nome dell activity se questa è creata automaticamente. Dalla versione 3.0 serve per gestire anche le ActionBar 20

Android: Emulatore Contro Lento (a volte molto) specie con laptop non prestanti Presenta bug Le ultime versioni (API 17 e superiori) richiedono Intel HAXM (Hardware Accelerator Execution Manager) per rendere più performante l emulatore attraverso la virtualizzazione (da attivare dal Bios) non sempre disponibile nei propri laptop. Problema: se attivo Hyper-V, HAXM non viene installato e l emulatore non viene eseguito (per Windows, Mac, Linux). Soluzione: scegliere quale dei due abilitare ogni volta oppure creare due opzioni di boot (guida) Pro Possibilità di ricreare situazioni particolari, come la localizzazione, ricezione chiamate e messaggi Permette la verifica del comportamento della nostra applicazione Possibilità di creare device con risoluzione, qualità di schermo e versione dell OS di nostro interesse al fine di testare la bontà dell app dal punto di vista di compatibilità. Android Studio offre template di dispositivi già pronti all utilizzo 22

Android: Logcat Il termine Log indica la registrazione cronologica delle operazioni man mano che vengono eseguite (Wikipedia). Il termine Cat indica un comando dei sistemi operativi Unix e Unixlike che legge i file che gli sono specificati come parametri (o lo standard input) e produce sullo standard output la concatenazione del loro contenuto (Wikipedia). I due termini uniti formano Logcat che indica il tracciamento cronologico delle operazioni con la relativa visualizzazione sullo standard output del sistema. Esempi reali: Lista della spesa Elenco delle chiamate ricevute ed effettuate, organizzate secondo un ordine cronologico 23

Android: Logcat ii logcat non è altro che un insieme di informazioni che ci permettono di ricordare o tracciare eventi nel passato Ad ogni informazione può essere associato un livello (o meglio filtro), in modo da organizzare in modo gerarchico le informazioni. In particolare i livelli sono i seguenti: V Verbose (lowest priority) D Debug I Info W Warning E Error F Fatal Tramite un analisi di questi dati e un apposito filtraggio per tag, PID o testo è possibile individuare la causa di errori o malfunzionamenti dell applicazione. Il logcat è nostro amico Imparare a usarlo salverà il nostro tempo 24

Struttura *.apk Un file apk (Android Package) contiene tutte le informazioni necessarie per permettere l esecuzione dell applicazione creata (sia su dispostivi che su emulatore) 25

Struttura *.apk build process Android Asset Packaging Tool (aapt) prende le risorse, come il manifest e gli xml, e li compila. Questo passo genera il file R.java aidl tool converte ogni interfaccia.aidl presente tra le interfacce Java Tutto il codice Java (comprese R.java e I file.aidl) sono compilati restituendo file.class dex tool converte i file.class in bytecode della Dalvik. Stessa cosa accade per le librerie incluse nel progetto 26

Struttura *.apk build process I file.dex, le risorse compilate e quelle non compilate sono inserite nell Android PacKaging (apk) L app viene firmata con la chiave di debug o di release Se l app è stata fermata con la chiave release è necessario allineare l apk con lo zipalign tool, diminuendo l uso della memoria quando questa è in esecuzione 27

Activity Una activity in Android rappresenta una singola schermata di una app con cui l utente si interfaccia. Un app ha una o più activity, ma solo una activity per volta può essere visualizzata sullo schermo Una activity attraverso gli intent può richiamare altre activity Solo con alcuni tipi di device, come i Samsung Galaxy Note, è possibile tenere aperte contemporaneamente più activity sullo schermo Competitor: Microsoft Windows 8.1-10 offre la stessa opportunità. 28

Activity: lifecycle Le activity sono inserite in uno stack, back stack gestisto tramie LIFO Quando una Activity in running richiama una nuova Activity, viene messa in pausa e stoppata Il cambio di activity può anche avvenire per mano dell utente (apre una nuova app) o a causa di un evento esterno (es. telefonata in arrivo) L utente può ibernare o ripristinare un activity ma non può chiuderla Terminazione gestita dal sistema ed è trasparente al developer 29

Activity: lifecycle Approfondimenti: link 30

Activity: lifecycle Esempio di comportamento del back stack gestito secondo l approccio Last In, First Out (LIFO) (link) Quando un activity corrente lancia una nuova activity, quella corrente viene messa in cima alla pila. L activity resta nella pila ed è stoppata Quando una activity viene stoppata, il sistema mantiene in memoria lo stato corrente ad essa relativa Cliccando sul tasto back, l activity corrente viene tolta dalla pila (e distrutta dal sistema) ripristinando l activity precedente Iterando quest ultima operazione si arriva fino all activity di partenza dell applicazione e se anche da qui viene cliccato il tasto back, si torna alla home deallocando del tutto l app 31

Activity: lifecycle protected void oncreate(android.os.bundle savedinstancestate) Richiamato alla creazione dell attività. setcontentview() per assegnare un layout all interfaccia utente L argomento savedinstancestate serve per riportare un eventuale stato dell attività salvato in precedenza da un altra istanza che è stata terminata. L argomento è null nel caso in cui l attività non abbia uno stato salvato. protected void onstart() Segnala che l attività sta per diventare visibile sullo schermo protected void onresume() Segnala che l attività sta per iniziare l interazione con l utente protected void onpause() Segnala che l attività non sta più interagendo con l utente protected void onstop() Segnala che l attività non è più visibile sullo schermo protected void onrestart() Segnala che l attività sta per essere riavviata, causa precedente arrestato protected void ondestroy() Segnala che l applicazione sta per essere terminata 32

Activity: lifecycle Questi metodi: Sono annotati con @Override possono essere riscritti dallo sviluppatore per specificarne il comportamento. Non necessariamente devono essere specificati tutti (fatta eccezione per OnCreate) Hanno come prima riga di codice il richiamo del metodo di base che si sta sovrascrivendo Es: @Override protected void onresume() { super.onresume(); //proprio codice } 33

DEMO Demo 34

Intent Servono a comunicare ad Android che un certo evento sta per avvenire. Spesso vengono utilizzati per il lancio di una Activity Descrivono l azione che si desidera compiere e fornisce i dati che vengono impiegati per compiere tale azione. Possono essere: Espliciti: creazione e definizione della classe da eseguire Impliciti: viene specificata l azione ma il destinatario non è noto. Fondamentale per la collaborazione tra app diverse. Es: l apertura PDF può essere eseguita da diverse app. 35

Intent Impliciti: viene specificata l azione ma il destinatario non è noto. Fondamentale per la collaborazione tra app diverse Ricerca di tutte le app con il medesimo intent filter 36

Intent Per passare da un activity ad un altra (modalità esplicità) Intent intent = new Intent(this, FooActivity.class); startactivity(intent); Per far partire un activity di cui non senza conoscere l applicazione destinataria (modalità implicita). Fondamentale il filtro ACTION_SEND che deve essere presente e settato nell applicazione destinataria. Intent intent = new Intent(Intent.ACTION_SEND); startactivity(intent); Possibilità di creare AppChooser per permettere all utente di scegliere con quale app aprire l oggetto inviato attraverso l intent 37

Intent Ricezione di un intent implicito Necessario dichiarare uno o più intent filters all interno del manifest attraverso il tag <intent-filter> In ogni filtro si deve specificare action: dichiara il tipo di intent accettato, da specificare nell attributo «name» data: dichiara il tipo di dato accettato, usando uno o più attributi che specificano i vari aspetti dell URI (host, port, path, ecc) e il MIME type category: dichiara la categoria dell intent accettato da specifiare nell attributo name. Esempio di intent filter che permette di ricevere un intent con ACTION_SEND <activity android:name="shareactivity"> <intent-filter> <action android:name="android.intent.action.send"/> <category android:name="android.intent.category.default"/> <data android:mimetype="text/plain"/> </intent-filter> </activity> 38

Intent Passaggio di dati tra due activity attraverso il metodo putextra(..) di Intent intent.putextra(name, value); startactivity(intent); Estrazione dei dati dall activity di destinazione Intent intent = getintent(); intent.getstringextra(name) 39

Intent Esempio di intent per inviare una mail Intent intent= new Intent(); String[] recipients = new String[]{"my@email.com"}; intent.setaction(intent.action_send); intent.putextra(intent.extra_text, "testo da mostrare"); intent.putextra(intent.extra_email, recipients); intent.putextra(intent.extra_subject, "Oggetto Email"); intent.settype("text/plain"); startactivity(intent); 40

Intent Esempio di intent per inviare aprire una pagine web del browser. String url = "http://www.uniroma3.it"; Intent i = new Intent(Intent.ACTION_VIEW); i.setdata(uri.parse(url)); startactivity(i); Alternativamente Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startactivity(i); 41

DEMO Demo 42

Layout e grafica Componente fondamentale dell interfaccia grafica è la classe android.view.view In generale un oggetto View occupa una porzione rettangolare dello schermo è responsabile della creazione della grafica e della gestione degli eventi della porzione di schermo assegnata è la classe alla base dei widget (Button, check box, textview, ecc) Progettato il layout di una certa activity, ossia la View, è possibile mostrarla all utente finale dell applicazione attraverso il metodo della classe Activity public void setcontentview(view view) 43

Layout e grafica FrameLayout definito per bloccare in una certa area dello schermo un singolo oggetto. Non sempre utilizzato perché non permette un buon adattamento alle altre risoluzioni di schermo. Permette di aggiungere comunque dei nodi figli (widget o altro) la cui posizione deve essere gestita opportunamente attraverso le proprietà offerte da Android come android:layout_gravity TableLayout posiziona gli oggetti in righe e colonne, senza mostrare bordi. Una singola riga è rappresentata da un oggetto di tipo TableRow in cui inserire i widget 44

Layout e grafica RelativeLayout consente ai figli di specificare la propria posizione relativamente alla View genitore o ad altri figli. Offre un ottima gestione nel posizionamento dei suoi nodi attraverso opportune proprietà LinearLayout allinea tutti gli oggetti orizzontalmente o verticalmente a seconda del valore dell'attributo orientation. I figli sono posizionabili mediante la proprietà gravity. Definisce due proprietà fondamentali weightsum da utilizzare all interno del LinearLayout e weight da usare su i figli. Tramite queste è possibile posizionare gli elementi del layout affinché occupino sempre la medesima posizione nelle schermate. 45

Layout e grafica Esempio di definizione di un layout <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/black"> //QUI VANNO INSERITI GLI ELEMENTI CHE SI DESIDERA MOSTRARE ALL UTENTE </RelativeLayout> A. Tedeschi 2013/2014 46

Layout e grafica Widget componenti di base per l interazione con l utente Ne esistono diversi e sono tutti disponibili al programmatore attraverso il package android.widget Estendono la classe View Possono essere creati da codice Java o da file xml. Sono definiti da proprietà (android:nomepro=valore) che ne definiscono la posizione, la grandezza, il colore, ecc. La possibilità di accesso ad alcune proprietà dipende dal tipo di Layout scelto <ImageView android:id="@+id/androidsplash" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:layout_marginbottom="5dp" android:contentdescription="@string/empty" android:src="@drawable/android" /> <TextView android:id="@+id/splash" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerinparent="true" android:paddingleft="20dip" android:paddingright="20dip" android:text="@string/splashtext" android:textcolor="@android:color/white" android:textsize="25sp" /> A. Tedeschi 2013/2014 47

Layout e grafica I widget e i layout permettono adottano delle unità di misura per stabilire lo spazio occupato o la grandezza del font Queste sono rappresentate dai seguenti acronimi px = pixel, attuali sullo schermo sp = scale-independent pixels adottato per la dimensione del font dip dp = Density-independent pixels si basa sulla desità fisica dello schermo 1 px = 160dp, tale rapporto cambia in base alla densità dello schermo È adottato per definire le grandezze delle immagini, del padding, del layout, ecc A. Tedeschi 2013/2014 48

DEMO Demo A. Tedeschi 2013/2014 49

Layout e grafica Problema A causa della molteplicità dei dispositivi mobili in circolazione (oltre i 2000 con caratteristiche hardware e software differenti tra loro) è necessario gestire opportunamente la grafica. Soluzione Creare opportunamente il layout grafico principale adottando il RelativeLayout ove possibile e necessario Supportare le diverse soluzioni di schermo, creando nuovi layout con layout- RISOLUZIONE. Es: layout-ldpi Supportare le diverse versioni della piattaforma Android Popolare opportunamente le cartelle drawable-risoluzione, che differiscono tra loro per la risoluzione dell immagine Il sistema automaticamente in base alla caratteristiche del dispositivo selezionerà il layout e le immagini opportune per garantire la migliore esperienza utente. Approfondimenti http://developer.android.com/guide/practices/screens_support.html A. Tedeschi 2013/2014 50

DEMO Demo 51

App Multilingua Per creare un applicazione multilingua è necessario compiere i seguenti passi: Definire opportunamente in lingua inglese il contenuto del file string.xml presente nella cartella values Creare una o più cartelle values-lingua, dove LINGUA è l abbreviazione della lingua che si desidera supportare es: Italiano = it; Spagnolo = es; ecc Copiare e incollare il file string.xml presente in values e incollarlo all interno della cartella values-lingua che avete creato. Aggiornate opportunamente il file con i valori corretti di lingua. Android automaticamente riconoscerà che l applicazione supporta più lingue e pertanto selezionerà la lingua che corrisponde con quella del telefono. Se così non fosse Android utilizzerà la lingua di default, ossia l inglese. NOTA: quanto descritto è valido solo per contenuti testuali statici A. Tedeschi 2013/2014 52