Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Guida allo Sviluppo di App Android: Layout e Componenti, Appunti di Programmazione Avanzata

Programmazione android, sprik.IT R.P.A.

Tipologia: Appunti

2015/2016

Caricato il 29/11/2016

giuseppe4400
giuseppe4400 🇮🇹

3.7

(3)

2 documenti

1 / 104

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Android by Example
v4.2 JellyBean
Rossi Pietro Alberto
Sorgenti scaricabili dal sito www.sprik.it
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Anteprima parziale del testo

Scarica Guida allo Sviluppo di App Android: Layout e Componenti e più Appunti in PDF di Programmazione Avanzata solo su Docsity!

Android by Example

v4.2 JellyBean

Rossi Pietro Alberto

Sorgenti scaricabili dal sito www.sprik.it

Premessa

Tanto tempo è passato dalla prima guida, troppo. L'intento era quello di costruire una guida solida e completa nel corso del tempo, senza fretta, con la consapevolezza di dover fare qualcosa di grande per un pubblico vasto come i programmatori Android. La prima guida ha avuto un successo abnorme, fuori le aspettative iniziali, si parla di circa trentamila download. Era molto basilare e mancavano varie cose ma soprattuto gratuita! La prima guida gratuita! Per chi non mi conosce o non ha letto la guida precedente mi ripresento: mi chiamo Alberto ed attualmente sono uno sviluppatore .NET per una azienda che si occupa di pubblica amministrazione. In passato sono stato anche programmatore su sistemi POS con il buon linguaggio C, mai abbandonato e sempre in voga. Sono stato relatore a vari LinuxDay, LinuxMeeting, JavaDay a Palermo, in attesa di qualche conferenza fuori. La mia passione per Android nasce molti anni fa, quando, leggendo molti libri, mi sono chiesto se valeva la pena fare un ebook gratuito, da donare alla community. Presto fatto l'ebook è uscito fuori, Dicembre 2010, ed adesso dopo 2 anni è pronta la seconda versione, completa ed aggiornata. A metà 2012, sono stato anche docente per un corso Android all'Università di Palermo, dove non finirò mai di ringraziare Vincenzo Virgilio dell'associazione Sputnix di avermi dato fiducia ed aver partorito un corso eccezionale. Ribadisco, che non metterò mai in vendita questa guida, ma purtroppo sarà l'ultima riguardo Android. Spero in qualche casa editrice per scrivere qualcosa di più serio e più concreto. Anche questa guida si basa sulla brevità e concisione. Non ci sarà molta teoria, quella la lasciamo ai libri veri, ma solo lo stretto e necessario per capire le fondamenta della programmazione su sistemi Android. Stavolta la guida sarà pubblicata sul mio sito www.sprik.it, non per atto di egoismo, ma perchè ibasblog.it ha cessato di esistere. Non finirò mai di ringraziare i miei ex collaboratori, che hanno creduto fin dall'inizio in questo progetto, pinosiciliano e cd. Anche se le nostre strade si sono ormai separate, per motivi lavorativi, non si dimenticano certe cose: incoraggiamenti, le nostre lunghe riunioni e tutto il resto.

Introduzione di base

  • Programmazione ad oggetti
  • Programmazione visuale
  • Programmazione ad eventi

Introduzione alla programmazione ad oggetti

Quando iniziamo a realizzare un programma, sia di 10 righe sia di 100 mila righe, a primo impatto andiamo a cercare una soluzione al nostro problema, pensando principalmente a non avere troppe complicazioni man mano che si scrive il codice. Fra le considerazioni iniziali c’è sempre la famosa domanda “Che linguaggio utilizziamo?”. Quello che noi andremo a cercare è un paradigma che ci permette di risolvere il problema, nella maniera più semplice possibile. Da qui discende che un paradigma è un modello comportamentale di programmazione o, più semplicemente, uno stile di programmazione. La scelta del linguaggio di programmazione è molto importante, soprattutto se un progetto è abbastanza grande. Essa può derivare anche dal tipo di problema da risolvere: molti linguaggi dispongono di librerie, già predisposte, che semplificano alcune procedure ritenute fondamentali o soltanto per il semplice scopo di semplificare la vita del programmatore. Il modo di pensare come programmare un applicazione è fondamentale. In programmazione imperativa ci mettiamo davanti il progetto e ci chiediamo cosa fare, fissando l’attenzione sull’obiettivo da raggiungere e di come raggiungerlo. In programmazione ad oggetti, invece, dobbiamo cercare di non personalizzare l’oggetto ma continueremo a pensare l’oggetto così come è. Penseremo ad un oggetto astratto, cercando di individuare quali sono le caratteristiche dell’oggetto e le sue potenzialità. Gli elementi caratteristici sono chiamati Attributi dell’oggetto, le potenzialità sono invece chiamate Metodi. Da notare che, molti programmatori, le potenzialità dell’oggetto li chiama erroneamente funzioni: dato che possono somigliare parecchio alle funzioni utilizzate in qualunque linguaggio imperativo. Durante l’analisi del problema non importa cosa faccia il metodo, l’importante è rispecchiare le potenzialità e successivamente svilupparne il problema. Altro errore che spesso si sente è l’utilizzo di Classe e Oggetto come se fossero la stessa cosa: un Oggetto è la rappresentazione reale della problematica presa in considerazione, la Classe invece è la rappresentazione astratta dell’Oggetto. Per esempio, se consideriamo una penna, essa nella realtà rappresenta il nostro Oggetto vero e proprio, così come è fatto: sappiamo che è una penna, il colore, il tipo, ecc… La Classe che rappresenterà la penna sarà, per definizione, l’astrazione dell’Oggetto. Qui ci possiamo chiedere “E cosa cambia? Non è la stessa cosa?”, la risposta è parzialmente negativa perché, attraverso questo processo di astrazione, noi andremo a determinare anche altri dettagli supplementari dell’Oggetto: se scrive o meno, livello di inchiostro, ecc.

Introduzione alla programmazione ad eventi

Quando si verifica un qualsiasi evento, il sistema lo intercetta ed invia le informazioni (tipo di evento ed oggetto origine) ad uno speciale manipolatore degli eventi. Gli eventi controllabili dal nostro sistema generalmente tre:

  • Eventi del mouse
  • Eventi della tastiera
  • Eventi del sistema Gli eventi del mouse sono quelli che più comunemente avvengono mentre utilizziamo un PC: basta muovere il mouse o cliccare su un punto dello schermo per generare un evento. Gli eventi del mouse si dividono in tre sotto-categorie:
  • Eventi generati dai pulsanti del mouse
  • Eventi generati dal movimento del mouse
  • Eventi generati dal trascinamento del mouse La prima sotto-categoria definisce eventi quali:
  • Click, che viene generato quando si clicca su un oggetto
  • DoppioClick, che viene generato con un doppio click
  • PulsanteMousePremuto, che viene generato quando si tiene premuto il pulsante sinistro del mouse
  • PulsanteMouseRilasciato, che viene generato quando si rilascia il pulsante sinistro del mouse precedentemente premuto La seconda definisce eventi quali:
  • MouseSopra, che viene generato quando il mouse si muove su un oggetto
  • MouseVia, che viene generato quando il mouse si sposta da un oggetto
  • MovimentoMouse, che viene generato quando il mouse si muove Infine, la terza definisce eventi quali:
  • TrascinaMouse, che viene generato quando un utente trascina il mouse con il pulsante premuto
  • MouseTrascinaOggetto, che viene generato quando un utente trascina un oggetto sulla finestra Gli eventi della tastiera sono quelli classici che avvengono quando premiamo un tasto o una combinazione di essi. Gli eventi della tastiera si dividono in:
  • TastoAttivato, che viene generato quando un utente preme e rilascia un tasto o quando tiene premuto un tasto
  • TastoPremuto, che viene generato quando quando viene premuto un tasto
  • TastoRilasciato, che viene generato quando viene rilasciato un tasto precedentemente premuto

Gli eventi del sistema sono quei eventi generati con le iterazioni fra degli oggetti, come finestre, ed il sistema. Gli eventi del sistema si suddividono in quattro sotto-categorie:

  • Eventi generati dal caricamento degli oggetti
  • Eventi generati dalle modifiche dell’utente
  • Eventi legati al fuoco
  • Eventi generati dai movimenti delle finestre La prima sotto-categoria definisce eventi quali:
  • Carica, che viene generato quando al caricamento degli oggetti
  • Abbandona, funzione opposta a Carica La seconda definisce eventi quali:
  • Cambio, che viene generato quando viene modificato il valore di un oggetto La terza definisce oggetti quali:
  • PerdeFuoco, che viene generato quando si esce da un oggetto della GUI
  • AcquistaFuoco, che viene generato quando si entra in un oggetto della GUI
  • SelezionaTesto, che viene generato quando si seleziona del testo all’interno di un campo, di un’etichetta o di altri oggetti simili La quarta definisce eventi quali:
  • RidimensionaFinestra, che viene generato quando l’utente riduce o ingrandisce una finestra
  • ScorriFinestra, che viene generato quando si effettua lo scorrimento della pagina sia con il mouse che con i tasti PgSu e PgGiù. Un’altra categoria di eventi sono quelli generati dagli oggetti standard di una GUI e possono essere classificati nel seguente modo:
  • Eventi d’azione: sono gli eventi generati quando un pulsante è stato premuto, quando si attiva una casella di testo o un pulsante di opzione, quando si seleziona una voce di un menu , quando si preme “Invio” dentro una casella di testo, ecc;
  • Eventi di selezione o deselezione in un elenco: sono gli eventi legati alla selezione di una casella di controllo o di una voce di menu a scelta;
  • Eventi di selezione o di deselezione per input: sono gli eventi generati quando un oggetto in risposta ad un click del mouse o all’utilizzo del tasto di tabulazione. Questa piccola introduzione, teorica, agli eventi ci fa capire quanti eventi vengono generati anche solo premendo un tasto o muovendo il mouse. A livello di linguaggio di programmazione non è difficile intercettare gli eventi e gestirli, molti linguaggi facilitano il lavoro, soprattutto quelli equipaggiati di un IDE visuale che ci mette a disposizione tutti gli strumenti per facilitare ed accelerare la programmazione.

Eclipse, Android SDK e configurazione AVD

Il principale IDE (Integrated Development Environment) per lo sviluppo su piattaforma Android è Eclipse. Esso è un ambiente di sviluppo che integra al suo interno vari strumenti per facilitare e centralizzare la costruzione di una applicazione. Molto famoso per essere cross-platform (può essere installato su Windows, Linux e Mac) e per la sua capacità di integrare vari plugin per renderlo compatibile con diversi linguaggi di programmazione. Per installarlo basta andare nella sezione download del sito : http://www.eclipse.org/downloads/ In automatico verrà riconosciuta la versione del sistema operativo e noi possiamo scegliere se scaricare la versione a 32bit o 64bit. Per comodità ho installato la versione “ Java EE Developers ” in quanto contiene tutte le librerie Java di base ed avanzati per lavorare anche con HTML/JSP/JSF, che possono rivelarsi utili per particolari scopi di sviluppo.

Dopo aver effettuato il download possiamo scompattare l'archivio in una cartella a nostra scelta ed avviare l'ambiente. Alla prima apertura, ci chiederà la cartella per il workspace , il nostro contenitore di progetti. Mettendo la spunta su “Use this as the default and do not ask again”, al successivo avvio non ci chiederà più il workspace e renderà quello scelto precedentemente il predefinito.

Successivamente dobbiamo installare il plugin di Android per Eclipse andando su Help → Install New Software e cliccando sul pulsante Add della finestra che vi viene proposta Come nuovo repository metteremo un nome a nostra scelta e come indirizzo quello specifico di google https://dl-ssl.google.com/android/eclipse Cliccando su OK ci verrà restituita la lista dei tools da poter scaricare.

Nel passo successivo ci verranno mostrati i componenti che verranno scaricati.

Il software si installa in maniera autonoma ed in poco tempo, secondo sempre la connessione disponibile, dato che deve scaricare una buona quantità dati da internet. Quanto tutto è completato passiamo alla configurazione del SDK scaricato precedentemente su Preferences → Android Da notare che, in questa ultima versione per MAC, è già presente SDK relativo alla versione 4.2 di Android. Lo stesso si può notare dall' Android SDK Manager , che si trova sotto il menu Window, dove sarà possibile scaricare altre versioni del SDK, varie librerie ed aggiornare le presenti.

Scorrendo la lista, troviamo negli extra la Android Support Library , che ci servirà per gestire le vecchie versioni di Android in modalità compatibile. Se non la selezioniamo ci verrà richiesta alla configurazione del primo progetto. Per creare una nuova AVD (Android Virtual Device), partiamo dal Android Virtual Device Manager , presente sempre sotto il menu Window, dove ci verrà presentata una lista delle AVD create. Clicchiamo sul tasto New per crearne una nuova.

HelloWorld

Per aprire un nuovo progetto andiamo su File → New e dalla lista che compare selezioniamo Android Application Project. Come primo passo dobbiamo indicare il nome dell'applicazione, del progetto e del pacchetto. Quest'ultimo solitamente è composto dal nome del sito seguito dal nome del progetto. In questa prima parte, sarà possibile selezionare la versione di android su cui è destinata l'applicazione e il tema principale.

Il passo successivo prevede impostazioni di base, come la directory del progetto e la possibilità di pre-creare o meno activity (i vecchi form, detto in maniera basilare). Poi si provvede alla configurazione dell'icona dell'applicazione.