Android è un sistema operativo per dispositivi mobili basato su una versione modificata di Linux. Esso è stato originariamente sviluppato da una piccola azienda, la Android Inc, ma nel 2005 Google ne acquistò i diritti per farne il sistema di base sul quale fare lavorare il suo team di sviluppo nell'ottica di fornire una soluzione di riferimento per il...
Prima di cominciare con lo sviluppo di applicazioni Android è necessario configurare la piattaforma da utilizzare a tale scopo. Questo aspetto coinvolge un certo numero di passaggi tra cui l'installazione del Java Development Kit (JDK) e dell'ambiente di sviluppo Android Studio, che include a sua volta l'Android Software Development Kit (SDK).
Il Software Development Kit (o, più brevemente, SDK) è...
Prima di addentrarci nello studio delle peculiarità di Android Studio è opportuno provare a creare una semplice applicazione, per verificare che l'installazione dell'ambiente di sviluppo sia andata a buon fine.
Il primo passo è quello di creare un nuovo progetto all'interno dell'ambiente di sviluppo. Dopo aver lanciato Android Studio, come abbiamo visto, compare la finestra di benvenuto:
Cliccando sulla voce Start...
Come abbiamo potuto iniziare a vedere, Android Studio è un ambiente di sviluppo molto potente e ricco di utili caratteristiche il cui utilizzo bisogna comprendere bene per sfruttarle al meglio. Quindi, quello che faremo in questa lezione, è andare ad analizzare le aree ed i componenti più importanti di questo IDE (Integrated Development Environment, Ambiente di Sviluppo Integrato).
All'avvio di...
Durante lo sviluppo di app Android capita spesso di compilare ed eseguire il codice molte volte prima di arrivare ad una versione finale stabile. Un'applicazione Android può essere installata ed eseguita sia su un dispositivo fisico che su un emulatore messo a disposizione da Android Studio e denominato Android Virtual Device (AVD). Tuttavia prima di utilizzare un AVD bisogna...
Nello sviluppo di applicazioni è necessario scrivere molto codice quindi un aspetto fondamentale di ogni ambiente di sviluppo è l'editor di codice (code editor). I moderni editor mettono a disposizione diverse funzionalità aggiuntive rispetto a quelle classiche al fine di aumentare la produttività degli sviluppatori, ad esempio rendendo più facile la navigazione all'interno del codice oppure evidenziando in tempo...
Nelle lezioni precedenti abbiamo acquisito familiarità con l'ambiente di sviluppo Android Studio e abbiamo creato un semplice progetto di prova per analizzare alcuni suoi aspetti. Prima di addentrarci però su concetti più avanzati è opportuno soffermarci un momento su alcuni concetti più astratti che stanno alla base dello sviluppo di applicazioni per Android.
Android è un sistema che comprende un...
Adesso è il momento di comprendere alcuni concetti di alto livello che stanno alla base dello sviluppo di applicazioni Android e per farlo, come spesso accade, è meglio procedere con un esempio pratico. Quindi avviamo Android Studio e, seguendo quello che abbiamo fatto nelle prime lezioni di questa guida, creiamo un nuovo progetto denominato MyHelloWorld.
Osservando la finestra Project...
Abbiamo compreso che un'applicazione Android è costituita da diversi componenti. Questi elementi devono utilizzare le risorse del sistema sul quale risiedono consentendo però al sistema operativo e alle altre applicazioni di rimanere responsivi all'interazione con l'utente. Per ottenere questo risultato è fondamentale comprendere il ciclo di vita delle applicazioni e delle activity, ma anche il modo in cui un'applicazione...
Un'applicazione Android può contenere una o più activity. Quando sono presenti più activity solitamente è necessario fornire anche una funzionalità di navigazione tra di esse e per fare questo si utilizzano i cosiddetti Intent.
Il concetto di Intent è un po' astratto e per comprendere la sua importanza, come spesso accade, la cosa migliore è quella di provarne il funzionamento...
Nelle lezioni precedenti abbiamo imparato cos'è un'activity e il suo funzionamento. Tipicamente su uno schermo piccolo, come quello di uno smartphone, un'activity copre l'intera area, mostrando le varie view (viste) che costituiscono l'interfaccia utente di un'applicazione. Quindi si può dire che un'activity sia un contenitore di viste.
Quando un'activity viene visualizzata su uno schermo di dimensioni più ampie, come quello...
Abbiamo imparato che un'activity è un'entità attraverso cui gli utenti interagiscono con un'applicazione. Tuttavia un'activity di per sé non si visualizza materialmente sullo schermo di un dispositivo, essa consente invece di visualizzare oggetti sullo schermo.
Un'activity è l'unità di base di un'applicazione Android e permette di visualizzare sullo schermo l'interfaccia utente ad essa relativa che può contenere elementi quali pulsanti,...
Dopo aver analizzato i vari tipi di layout che è possibile utilizzare per posizionare le viste all'interno di un'activity, adesso è il momento di dare un'occhiata ai vari tipi di viste che possiamo utilizzare per realizzare l'interfaccia utente delle nostre applicazioni. Le viste corrispondono, ad esempio, ai controlli delle applicazioni Microsoft.NET.
Andiamo ad analizzare più in dettaglio alcune delle viste...
Nella precedente lezione abbiamo utilizzato una serie di viste di base che possiamo utilizzare per la realizzazione delle nostre applicazioni Android. Esistono molte altre viste e adesso andremo a vederne alcune.
TimePicker
Selezionare una data e un orario è una delle attività più comuni da effettuare in un'applicazione mobile. Android supporta questa funzionalità tramite le viste TimePicker e DatePicker. Per analizzare...
Nelle lezioni precedenti abbiamo cominciato a familiarizzare con il designer di Android Studio e nella presente lezione ci soffermeremo sulle caratteristiche principali di questo strumento, perché risulta difficile pensare ad una applicazione Android che non si basi su un'interfaccia utente e il designer è lo strumento fondamentale per generare interfacce utente di qualsiasi genere.
Come abbiamo visto il designer consiste...
L'archiviazione e la gestione dei dati è un aspetto fondamentale nello sviluppo di applicazioni in generale. Nell'ambito Android esistono tre modalità di gestione dei dati e nella presente lezione vedremo il primo, una struttura conosciuta come Shared Preferences che consente di gestire piccole quantità di dati.
L'oggetto utilizzato in Android a tale scopo è SharedPreferences e tramite esso è possibile...
Come abbiamo visto nella lezione precedente, l'oggetto SharedPreferences consente di memorizzare informazioni sotto forma di coppie nome/valore. Tuttavia in molti casi è preferibile utilizzare il tradizionale file system per la memorizzazione dei nostri dati.
Uno dei modi di salvare informazioni in un'applicazione Android è quello di scriverli all'interno di un file nella memoria interna del sistema. Per capire come effettuare...
Le tecniche di archiviazione viste fino a questo momento sono consigliabili per la gestione di piccole quantità di dati. Se invece per esempio volessimo archiviare e gestire gli indirizzi di tutti i clienti di un'azienda l'approccio migliore sarebbe quello di utilizzare un database. Questo perché con questo tipo di approccio è molto più semplice poi ricercare dati specifici, semplicemente...
Nelle lezioni precedenti abbiamo utilizzato eventi, come il click su un button, per effettuare determinate attività. Adesso è il momento di comprendere meglio come funzionano gli eventi su Android. Essi possono essere utilizzati in diversi modi, ma generalmente vengono utilizzati in risposta ad un'azione esterna. Quelli più comuni su dispositivi come tablet e smartphone riguardano l'interazione con il touch...
Per un'app un metodo più usuale di comunicare con il mondo esterno è ilprotocollo HTTP, attraverso cui è possibile effettuare una grande varietà di operazioni, come il download di pagine web da un server, il download di dati binari e così via. Nella presente lezione creeremo un'applicazione in cui utilizzando HTTP scaricheremo diversi tipi di contenuti.
Avviamo dunque Android Studio...
Nel corso delle lezioni precedenti abbiamo imparato tante cose interessanti che è possibile fare su un dispositivo Android. Tuttavia prima di rendere disponibili le nostre applicazioni sui dispositivi di altri utenti è necessario una procedura di rilascio e distribuzione delle stesse.
Fortunatamente Google ha reso relativamente semplice la pubblicazione delle applicazioni in modo che esse possano essere rapidamente distribuite agli...
Abbiamo a cuore la tua privacy
Noi e i nostri partner archiviamo e/o accediamo a informazioni su un dispositivo. Cookie, identificatori del dispositivo o analoghi identificatori online (ad es. identificatori basati sull’accesso, identificatori assegnati casualmente, identificatori basati sulla rete) insieme ad altre informazioni (ad es. tipo di browser e informazioni sul browser, lingua, dimensioni dello schermo, tecnologie supportate, ecc.) possono essere archiviati sul o letti dal dispositivo dell’utente per riconoscerlo ogni volta che l’utente si connette a un’app o a un sito web, per una o più finalità qui presentate.
Con il tuo consenso, i tuoi dati possono essere utilizzati per quanto segue: Pubblicità e contenuti personalizzati, misurazione delle prestazioni dei contenuti e degli annunci, ricerche sul pubblico, sviluppo di servizi; Dati di geolocalizzazione precisi e identificazione attraverso la scansione del dispositivo.
I tuoi dati personali verranno trattati e le informazioni dal tuo dispositivo (cookie, identificatori univoci e altri dati del dispositivo) possono essere memorizzate, consultate e condivise con 179 partner, o utilizzate specificamente da questo sito o questa app. Alcuni fornitori potrebbero trattare i tuoi dati personali sulla base dell'interesse legittimo, al quale puoi opporti gestendo le tue opzioni qui sotto. Puoi revocare il tuo consenso in qualsiasi momento facendo clic sul link delle impostazioni sulla privacy situato in fondo alla pagina.
Puoi scegliere come utilizzare i tuoi dati personali. Noi e i nostri partner desideriamo il vostro permesso per fare quanto segue.
Alcuni partner non chiedono il tuo consenso al trattamento dei tuoi dati, ma fanno affidamento sul loro legittimo interesse commerciale. Guarda il nostro elenco di partner per conoscere gli scopi per cui credono di avere un interesse legittimo e come puoi opporti.
Questi sono i nostri partner pubblicitari che partecipano al Framework di trasparenza e consenso dello IAB, creato per garantire un uso trasparente e corretto dei dati.
Questi fornitori sono registrati su Google, ma non nel Transparency & Consent Framework di IAB Europe.
{"b_dec":{"def":"Rifiuta e chiudi","res":"Rifiuta e chiudi"},"priclt":"\u003Cdiv class=\u0022cl-consent-settings cl-consent-settings--is-hidden\u0022\u003E\u003Cstyle\u003E.cl-consent-settings{position:fixed;left:16px;bottom:calc(28px + var(--__lxG___css_var_privacy_icon_auto, 0px));z-index:100;transition:all 0.15s ease-in-out;transform:translateY(0)}.cl-consent-settings--is-hidden{transform:translateY(70px);opacity:0}.cl-consent-settings__hint{border-radius:4px;background:#282A3C;box-shadow:0 4px 24px 0 rgba(0,0,0,.15);color:#FFFCF2;position:absolute;right:-195px;top:0;bottom:0;margin:auto;height:40px;width:175px;display:flex;align-items:center;justify-content:center;padding:4px 12px;font-size:12px;font-weight:400;line-height:16px;cursor:default;user-select:none;transition:transform 0.3s ease,opacity 0.3s ease;transform:translateX(-22px);opacity:0;pointer-events:none;z-index:-1}.cl-consent-settings__hint::after{content:\u0022\u0022;position:absolute;left:-16px;top:0;bottom:0;margin:auto;width:0;height:0;border:0 solid transparent;border-top-width:12px;border-bottom-width:12px;border-right:16px solid #282A3C}.cl-consent-settings__btn{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0;border:none;background-color:#4b81e8!important;background-position:center center;background-size:30px 30px;background-repeat:no-repeat;box-shadow:0 0 20px 0 rgba(0,0,0,.35);z-index:70;position:relative;text-decoration:none;cursor:pointer}.cl-consent-settings__btn::before{content:\u0022\u0022;-webkit-mask-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 width=\u002730\u0027 height=\u002730\u0027 viewBox=\u00270 0 30 30\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 d=\u0027M15 2.813C8.28 2.813 2.812 8.28 2.812 15S8.28 27.188 15 27.188c6.72 0 12.188-5.468 12.188-12.188C27.188 8.28 21.72 2.812 15 2.812Zm0 1.874c5.686 0 10.313 4.627 10.313 10.313 0 5.686-4.627 10.313-10.313 10.313-5.686 0-10.313-4.627-10.313-10.313C4.688 9.314 9.314 4.687 15 4.687Zm-1.875 3.75a.937.937 0 1 0 0 1.875.937.937 0 0 0 0-1.874Zm5.156.938a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.812Zm-7.968 2.813a1.875 1.875 0 1 0 0 3.749 1.875 1.875 0 0 0 0-3.75Zm5.624 1.874a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876Zm4.688.938a.938.938 0 1 0 0 1.875.938.938 0 0 0 0-1.875Zm-8.906 2.813a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.813Zm6.562.937a1.406 1.406 0 1 0 0 2.813 1.406 1.406 0 0 0 0-2.813Z\u0027\/%3E%3C\/svg%3E\u0022);mask-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 width=\u002730\u0027 height=\u002730\u0027 viewBox=\u00270 0 30 30\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 d=\u0027M15 2.813C8.28 2.813 2.812 8.28 2.812 15S8.28 27.188 15 27.188c6.72 0 12.188-5.468 12.188-12.188C27.188 8.28 21.72 2.812 15 2.812Zm0 1.874c5.686 0 10.313 4.627 10.313 10.313 0 5.686-4.627 10.313-10.313 10.313-5.686 0-10.313-4.627-10.313-10.313C4.688 9.314 9.314 4.687 15 4.687Zm-1.875 3.75a.937.937 0 1 0 0 1.875.937.937 0 0 0 0-1.874Zm5.156.938a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.812Zm-7.968 2.813a1.875 1.875 0 1 0 0 3.749 1.875 1.875 0 0 0 0-3.75Zm5.624 1.874a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876Zm4.688.938a.938.938 0 1 0 0 1.875.938.938 0 0 0 0-1.875Zm-8.906 2.813a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.813Zm6.562.937a1.406 1.406 0 1 0 0 2.813 1.406 1.406 0 0 0 0-2.813Z\u0027\/%3E%3C\/svg%3E\u0022);background-color:#ffffff!important;mask-repeat:no-repeat;width:30px;height:30px}.cl-consent-settings__btn:hover+.cl-consent-settings__hint{transform:translateX(0);pointer-events:all;opacity:1}.cl-consent-settings__user{width:18px;height:18px;border-radius:50%;padding:0;border:1px solid #fff;background-color:#00AD98;background-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 viewBox=\u00270 0 10 11\u0027 width=\u002710\u0027 height=\u002711\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 stroke=\u0027%23fff\u0027 stroke-width=\u0027.1\u0027 d=\u0027M6.858 6.262A3.3 3.3 0 0 0 8.2 3.597C8.2 1.796 6.764.325 5 .325s-3.2 1.47-3.2 3.272c0 1.094.53 2.07 1.342 2.665A4.67 4.67 0 0 0 .45 10.5v.05h1v-.05c0-2.012 1.585-3.632 3.55-3.632s3.55 1.62 3.55 3.632v.05h1v-.05a4.67 4.67 0 0 0-2.692-4.238ZM5 1.345c1.22 0 2.2 1.002 2.2 2.252s-.98 2.25-2.2 2.25-2.2-1-2.2-2.25.98-2.252 2.2-2.252Z\u0027\/%3E%3C\/svg%3E\u0022);background-position:center center;background-size:9px 10px;background-repeat:no-repeat;z-index:75;position:absolute;top:-2px;right:-8px;text-decoration:none;visibility:hidden}\u003C\/style\u003E\u003Cbutton type=\u0022button\u0022 class=\u0022cl-consent-settings__btn\u0022\u003E\u003Cspan class=\u0022cl-consent-settings__user\u0022\u003E\u003C\/span\u003E\u003C\/button\u003E\u003Cdiv class=\u0022cl-consent-settings__hint\u0022\u003EImpostazioni sulla privacy e sui cookie\u003C\/div\u003E\u003C\/div\u003E","pricds":"show_in_the_footer","pricaa":1,"vcnt":179,"_t":{"titles":"Purposes|Purposes (Legitimate Interest)|Features|Special Features|Special Purposes|Scopi|Scopi (Interesse Legittimo)|Caratteristiche|Caratteristiche Speciali|Scopi Speciali","sp3_ret":"Le scelte che fai riguardo agli scopi e alle entità elencati in questo avviso sono salvate per un massimo di $sp3_retention$ nei seguenti cookie e variabili di archiviazione locale","ill_pp_ttl":"Esempi di Utilizzo","vndr_dtls_con":"Trattamento dei dati basato sul tuo consenso","vndr_dtls_li":"Trattamento dei dati basato sul legittimo interesse","vndr_dtls_fi":"Trattamento dei dati basato sul tuo consenso o interesse legittimo","cks_strg_dur":"dura $DURATION$","cks_strg_ses":"per la sessione attuale","cks_strg_not_used":"non utilizzato","cks_strg_dur_s":"sec","cks_strg_dur_i":"min","cks_strg_dur_h":"ora(e)","cks_strg_dur_d":"giorno(i)","cks_strg_dur_m":"mese(i)","cks_strg_dur_y":"anno(i)","vr_dts_purl":"URL della politica sulla privacy","vr_dts_dsurl":"URL di divulgazione dell\u0027archiviazione del dispositivo","vr_dts_dsurl_h":"Informazioni aggiuntive su archiviazione e operazioni","vr_dts_clmurl":"URL della richiesta di interessi legittimi","vr_dts_datac":"Categorie di dati","vr_dts_datac_h":"Categorie di dati raccolti in relazione agli scopi","vr_dts_stdret":"Conservazione dei dati standard (giorni)","vr_dts_stdret_h":"Il periodo standard è utilizzato a meno che non sia dichiarato un altro periodo per scopi specifici.","vr_dts_ret":"Conservazione dei dati (giorni)","vr_dts_usecks":"Usa i cookie","vr_dts_usecks_h":"Indica se il fornitore utilizza l\u0027archiviazione dei cookie (sessione o altro). SÌ indica che l\u0027archiviazione dei cookie è utilizzata. NO - l\u0027archiviazione dei cookie non è utilizzata.","vr_dts_usecksy":"Sì","vr_dts_usecksn":"No","vr_dts_cksage":"Età massima del cookie","vr_dts_cksage_h":"Il numero di secondi che rappresenta la durata potenziale più lunga per l\u0027archiviazione dei cookie su un dispositivo. Se un fornitore utilizza più cookie con durate diverse, rappresenta il cookie con la durata più lunga. Un numero negativo o 0 indica l\u0027archiviazione della sessione simile alla specifica Set-Cookie.","vr_dts_cksref":"Aggiornamento cookie","vr_dts_cksref_h":"Indica se i cookie vengono aggiornati dopo essere stati inizialmente impostati. SÌ - indica che il fornitore può aggiornare i cookie. NO - indica che il fornitore non aggiorna i cookie ogni volta che il browser viene ricaricato.","vr_dts_noncks":"Utilizza l\u0027accesso senza cookie","vr_dts_noncks_h":"Indica l\u0027uso da parte del fornitore di archiviazione non-cookie e accesso alle informazioni già memorizzate sul dispositivo di un utente. SÌ - indica che l\u0027accesso senza cookie è utilizzato. NO - indica che l\u0027archiviazione e l\u0027accesso senza cookie alle informazioni già memorizzate sul dispositivo di un utente non vengono utilizzati.","vr_dts_hgetl":"Limite della lunghezza della richiesta HTTP GET (Kbyte)","vr_dts_hgetl_h":"Dimensione massima della richiesta GET in kilobyte per aiutare a diagnosticare i problemi con il passaggio della stringa TC e limitare le stringhe di dimensioni eccessive.","vr_dts_addtnl":"Dati aggiuntivi","vr_dts_legaddr":"Indirizzo completo dell\u0027entità legale","vr_dts_b2bcont":"Dettagli di contatto B2B","vr_dts_terscp":"Ambito territoriale","vr_dts_terscp_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_env":"Ambiente","vr_dts_env_h":"Indica gli ambienti in cui il venditore opera","vr_dts_tserv":"Tipo di servizi","vr_dts_tserv_h":"Indica il tipo di servizi offerti dal venditore","vr_dts_trnsfout":"Trasferimenti internazionali fuori dall\u0027UE\/SEE","vr_dts_trnsfout_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_trnsfmch":"Meccanismi di trasferimento internazionale"}}