follow-app bootcamp 3: android
TRANSCRIPT
![Page 1: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/1.jpg)
www.follow-app.it
www.follow-app.it
Follow-App è un'attività sperimentale realizzata da ARTI e QIRIS in collaborazione con la Regione Puglia - programma Bollenti Spiriti nell'ambito dell'iniziativa Innovazione per l’Occupabilità – Azioni a supporto del Piano Straordinario per il Lavoro 2011. PO FSE, Asse VII "Capacità Istituzionale".
INTRODUZIONE ALLA PROGRAMMAZIONE ANDROID
MARZIALE GIUSEPPE
![Page 2: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/2.jpg)
www.follow-app.it /91
ABOUT ME (GIUSEPPE MARZIALE)
Introduzione alla piattaforma android 2
1. Sono Laureato in Ingegneria informatica specializzazione in sistema informativi e reti ( Ottobre 2007)
2. Lavoro in exprivia e mi occupo da pià di due anni di sviluppo mobile
3. Prevalentamente in ambito B2B
4. Sviluppiamo su Android, Ios, blackberry , Windows Phone e in multipiattaforma
5. Email : [email protected] skype: giuseppe_marziale
![Page 3: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/3.jpg)
www.follow-app.it /91
1. Introduzione alla piattaforma android
2. Struttura di un app android e tool di sviluppo
3. Laboratorio
AGENDA
3
![Page 4: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/4.jpg)
www.follow-app.it /91
INTRODUZIONE ALLA PROGRAMMAZIONE
ANDROID
Introduzione alla piattaforma android
Introduzione alla piattaforma android 4
![Page 5: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/5.jpg)
www.follow-app.it /91
PERCHE’SVILUPPARE MOBILE
Introduzione alla piattaforma android 5
![Page 6: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/6.jpg)
www.follow-app.it /91
PERCHE’SVILUPPARE MOBILE
Introduzione alla piattaforma android 6
La diffusione degli smartphone, è enorme ed in continua crescita. Gli utenti connessi sono milioni e le app scaricate hanno superato 10 miliardi di copie
![Page 7: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/7.jpg)
www.follow-app.it /91
UTENTI IOS,ANDROID,BB
Introduzione alla piattaforma android 7
![Page 8: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/8.jpg)
www.follow-app.it /91
PERCHE’ ANDROID (OS MARKETSHARE)
Introduzione alla piattaforma android 8
Sistema Operativo Vendite 2011 ( milioni)
Market share 2011 Crescita annuale
Android 237,7 48,8% 244%
IOS 93,1 19,1% 96%
Symbian 80,1 16,4% -29,1%
Blackberry 51.4 10,5% 5,0%
Bada 13,2 2,7% 183,1%
Windows Phone 6,8 1,4% -43,3%
Altri 5,4 1,1% 14,4%
Fonte : Canalys.com (Feb 2011)
![Page 9: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/9.jpg)
www.follow-app.it /91
PERCHE’ ANDROID (TREND VENDITE)
Introduzione alla piattaforma android 9
Fonte Wikipedia
![Page 10: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/10.jpg)
www.follow-app.it /91
PERCHE’ ANDROID
Introduzione alla piattaforma android 10
1. Curva di apprendimento non è ripida ( a differenza dello sviluppo IOS)
2. Android è open-source e I tool di sviluppo sono scaricabili gratuitamente
3. I costi di pubblicazione di un app sul market store di android sono esigui ( 25 dollari una tantum)
4. Installare un app android sul cellulare è un processo banale, le app android possono essere diffuse facilmente attraverso un sito web(Time to market molto basso)
![Page 11: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/11.jpg)
www.follow-app.it /91
ANDROID MANUFACTURES
Introduzione alla piattaforma android 11
![Page 12: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/12.jpg)
www.follow-app.it /91
FORNO MICROONDE ANDROID
Introduzione alla piattaforma android 12
http://www.pocket-lint.com/news/30712/android-powered-microwave-cooking-google
![Page 13: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/13.jpg)
www.follow-app.it /91
ARCHITETTURA ANDROID
13 Introduzione alla piattaforma android
![Page 14: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/14.jpg)
www.follow-app.it /91
COS’E’ ANDROID
14 Introduzione alla piattaforma android
E’ uno stack software per dispositivi mobili 1. Sistema Operativo: -open source appoggia al kernel Linux (>=2.6.27) -driver per l’hardware 2. Middleware: -librerie, android runtime, application framework 3. Applicazioni: -native o di terze parti.
![Page 15: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/15.jpg)
www.follow-app.it /91
LINUX KERNEL
15 Introduzione alla piattaforma android
1) Linux kernel e driver dell’hardware
2) Core system service per security, memory management, process management, network stack
![Page 16: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/16.jpg)
www.follow-app.it /91
LIBRERIE E RUNTIME
16 Introduzione alla piattaforma android
1. Librerie esposte attraverso l’application framework
2. Android runtime: Dalvik Virtual Machine
![Page 17: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/17.jpg)
www.follow-app.it /91
APPLICATION FRAMEWORK
17 Introduzione alla piattaforma android
API di alto livello
1. Le applicazioni native Android e quelle di terze parti utilizzano le stesse API.
![Page 18: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/18.jpg)
www.follow-app.it /91
APPLICAZIONI MOBILE
18 Introduzione alla piattaforma android
Sono di due Tipi
1. Web app: girano in un web browser: scritte in HTML, JavaScript, Flash, etc.
2. Native: Compilate per essere eseguite sul dispositivo
![Page 19: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/19.jpg)
www.follow-app.it /91
APPLICAZIONI NATIVE ANDROID
19 Introduzione alla piattaforma android
1. Scritte in Java utilizzando la sdk ufficiale distribuita da google – Non supporta tutte le librerie Java come ad esempio Swing
& AWT
2. Il codice java è compilato in byte code Dalvik (.dex) – Ottimizzati per i dispositivi mobili (migliore gestione della
memoria e delle risorse, utilizzo della batteria , etc.)
3. La Dalvik virtual machine esegue i files .dex
![Page 20: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/20.jpg)
www.follow-app.it /91
INTRODUZIONE ALLA PROGRAMMAZIONE
ANDROID
Struttura di un app android e tool di sviluppo
Struttura di un app android e tool di sviluppo 20
![Page 21: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/21.jpg)
www.follow-app.it /91
COMPONENTI BASE DI UN APP
Struttura di un app android e tool di sviluppo 21
1. Activities
2. View e ViewGroups
3. Service
4. Intent
5. Broadcast Receiver
6. ContentProvider
![Page 22: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/22.jpg)
www.follow-app.it /91
ACTIVITIES
Struttura di un app android e tool di sviluppo 22
1. Componenti base di un applicazione android. Un activity è una schermata mostrata all’utente.
2. Un app android deve avere almeno un activity ma può averne più di una che si alternano durante l’esecuzione dell’applicazione
![Page 23: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/23.jpg)
www.follow-app.it /91
VIEW E VIEWGROUPS
Struttura di un app android e tool di sviluppo 23
1. Le view sono I controlli utenti che costituiscono le user interface( bottoni, campi di testo, label, …) . Sono classi che estendondo android.view.View. Views
2. I viewgroups sono contenitori di view , servono per organizzare e impaginare i controlli utenti ( le view). Sono classi che estendono android.view.ViewGroups. ViewGroup
![Page 24: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/24.jpg)
www.follow-app.it /91
SERVICES
Struttura di un app android e tool di sviluppo 24
1. Eseguono operazioni in background che non richiedono l’interazione diretta dell’utente: es. Musica in sottofondo, scaricamento di un file, tracking della posizione dell’utente.
2. I servizi non hanno user interface
![Page 25: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/25.jpg)
www.follow-app.it /91
INTENT
Struttura di un app android e tool di sviluppo 25
1. E’ un messaggio asincrono di sistema che si compone di un azione da eseguire e dei dati.
2. Può essere esplicito o inplicito in quest’ultimo caso il sistema individua il componente che può eseguire tale azione (Intent Receiver) e la esegue.
3. Un applicazione si abilita alla registrazione di un particolare intent dichiarando un IntentFilter
![Page 26: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/26.jpg)
www.follow-app.it /91
INTENT 2
Struttura di un app android e tool di sviluppo 26
Un intent può essere usato per: 1. esplicitare un compito o azione che una Activity o
un Service possono eseguire solitamente con o su un particolare insieme di dati;
2. lanciare una particolare Activity o Service; 3. supportare l'interazione tra qualsiasi applicazione
installata sul dispositivo Android, senza doversi preoccupare di che tipo di applicazione sia o di quale componente software gli Intent facciano parte.
![Page 27: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/27.jpg)
www.follow-app.it /91
INTENT EXAMPLE:IMAGE SHARING
Struttura di un app android e tool di sviluppo 27
![Page 28: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/28.jpg)
www.follow-app.it /91
BROADCAST RECEIVER
Struttura di un app android e tool di sviluppo 28
1. Un app registra un broadcast receiver che e’ configurato per ricevere e gestire determinati messaggi di sistema e intent.
2. Un app può anche definire dei propri intent custom.
![Page 29: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/29.jpg)
www.follow-app.it /91
ANDROID SECURITY
Struttura di un app android e tool di sviluppo 29
1. Ogni app in android gira nel proprio processo associata ad un user ( di sistema) e ad un gruppo univoco
2. Ogni app è quindi isolata dalle altre e non può accedere ai dati delle altre app.
3. L’unico modo di condividere dati tra applicazioni è dichiarare esplicitamente un content provider.
![Page 30: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/30.jpg)
www.follow-app.it /91
CONTENT PROVIDER
Struttura di un app android e tool di sviluppo 30
Il sistema operativo mette a disposizione una serie di content provider nativi.
http://developer.android.com//reference/android/provider/package-summary.html.
Es.
1. Il database dei contatti
2. I contenuti multimediali (audio, video , foto)
![Page 31: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/31.jpg)
www.follow-app.it /91
STRUTTURA DI UN PROGETTO ANDROID
Struttura di un app android e tool di sviluppo 31
![Page 32: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/32.jpg)
www.follow-app.it /91
ANDROID MANIFEST
Struttura di un app android e tool di sviluppo 32
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="it.gmarz83.android.temperatura" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Convert" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="9" /> <uses-permission android:name="android.permission.INTERNET "> </uses-permission> </manifest>
![Page 33: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/33.jpg)
www.follow-app.it /91
ANDROID MANIFEST -PERMISSION
Struttura di un app android e tool di sviluppo 33
<uses-permission android:name="android.permission.INTERNET ">
Tra i principali permessi che possiamo richiedere ci sono i seguenti:
1. READ_CONTACTS: leggere (ma non scrivere) i dati dei contatti dell'utente.
2. WRITE_CONTACTS: scrivere (ma non leggere) i dati dei contatti dell'utente
3. RECEIVE_SMS: monitorare l'arrivo di messaggi SMS
4. INTERNET: accedere ed utilizzare la connessione Internet
5. ACCESS_FINE_LOCATION: utilizzare un accurato sistema di localizzazione come il GPS
http://developer.android.com/reference/android/Manifest.permission.html
![Page 34: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/34.jpg)
www.follow-app.it /91
STRUTTURA DI UN PROGETTO ANDROID
Struttura di un app android e tool di sviluppo 34
![Page 35: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/35.jpg)
www.follow-app.it /91
CARTELLA ASSETS
Struttura di un app android e tool di sviluppo 35
1. contiene risorse esterne necessarie all’applicazione (file audio, video, etc)
![Page 36: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/36.jpg)
www.follow-app.it /91
STRUTTURA DI UN PROGETTO ANDROID
Struttura di un app android e tool di sviluppo 36
![Page 37: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/37.jpg)
www.follow-app.it /91
CARTELLA DRAWABLE (RES)
Struttura di un app android e tool di sviluppo 37
1. Contiene I file immagine che saranno utilizzati all’interno dell’app( compresa l’icona dell’applicazione)
![Page 38: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/38.jpg)
www.follow-app.it /91
STRUTTURA DI UN PROGETTO ANDROID
Struttura di un app android e tool di sviluppo 38
![Page 39: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/39.jpg)
www.follow-app.it /91
CARTELLA LAYOUT (RES)
Struttura di un app android e tool di sviluppo 39
1. Contiene I file di layout delle schermate della nostra app.
2. Ogni schermata avrà il suo file di layout( ossia l’impaginazione della schermata).
3. Il layout può essere definito anche da codice, ma è preferibile utilizzare l’xml perchè disaccoppia la logica dalla definizione della user interface
![Page 40: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/40.jpg)
www.follow-app.it /91
STRUTTURA DI UN PROGETTO ANDROID
Struttura di un app android e tool di sviluppo 40
![Page 41: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/41.jpg)
www.follow-app.it /91
CARTELLA VALUES (RES)
Struttura di un app android e tool di sviluppo 41
1. Contiene file xml che definiscono risorse utilizzabili all’interno dell’applicazione
2. Es. Il file delle stringhe.
![Page 42: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/42.jpg)
www.follow-app.it /91
CARTELLA VALUES (STRING.XML)
Struttura di un app android e tool di sviluppo 42
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Nome App</string> </resources>
<application android:icon="@drawable/icon" android:label="@string/app_name">
![Page 43: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/43.jpg)
www.follow-app.it /91
STRUTTURA DI UN PROGETTO ANDROID
Struttura di un app android e tool di sviluppo 43
![Page 44: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/44.jpg)
www.follow-app.it /91
CARTELLA GEN
Struttura di un app android e tool di sviluppo 44
1. Contiene un file R.java generato automaticamente da eclipse( non bisogna modificarlo).
2. In questo file a ciascuna risorsa definita nella cartella Res( immagini, stringhe, view contenute nei layout ) è associato un id univoco mediante il quale si può accedere.
3. Es. Per accedere alla stringa app_name:
4. getString(R.string.app_name));.
![Page 45: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/45.jpg)
www.follow-app.it /91
STRUTTURA DI UN PROGETTO ANDROID
Struttura di un app android e tool di sviluppo 45
![Page 46: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/46.jpg)
www.follow-app.it /91
CARTELLA SRC
Struttura di un app android e tool di sviluppo 46
1. Contiene i file sorgente della nostra applicazione
![Page 47: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/47.jpg)
www.follow-app.it /91
ACTIVITY LIFECYCLE
Struttura di un app android e tool di sviluppo 47
![Page 48: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/48.jpg)
www.follow-app.it /91
1. App multidevice
2. Hello word
3. Intent tutorial
4. Editor di note
5. Location Manager e Google Map tutorial
LABORATORIO
48
![Page 49: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/49.jpg)
www.follow-app.it /91
APP MULTIDEVICE
Laboratorio 49
1. I dispositivi android hanno una moltitudine di dimensioni , risoluzioni , e densità
2. La densità è il numero di pixel per pollice calcolato sulla diagonale.
![Page 50: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/50.jpg)
www.follow-app.it /91
CLASSIFICAZIONE DEVICE
Laboratorio 50
Fonte : http://developer.android.com (Feb 2012)
![Page 51: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/51.jpg)
www.follow-app.it /91
1. Usare wrap_content, fill_parent, e l’unità di misura dp per impostare le dimenzioni nei file di layout XML
2. Non usare mai misure in pixel hard coded nelle app 3. Non usare l’ absoluteLayout ( che è deprecato) 4. Inserire repliche della stessa immagine per ogni densità 5. Testare l’app usando gli emulatori 6. Approfondimento:http://docs.huihoo.com/android/2.2/
guide/practices/screens_support.html
LA SOLUZIONE
51
![Page 52: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/52.jpg)
www.follow-app.it /91
LA SOLUZIONE: DPI
Laboratorio 52
1. DPI = Density Indipendent Pixel ossia un unità di misura dello schermo indipendente dalla densità
2. 1 pixels = DP(density pixel) * (DPI(densità) / 160).
3. Indipendentemente dalla dimensione e della densità dello schermo il density pixel occupa sempre lo stesso spazio
![Page 53: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/53.jpg)
www.follow-app.it /91
LA SOLUZIONE: SCALARE LE IMMAGINI
Laboratorio 53
1. 3:4:6:8 è il rapporto tra le 4 densità. 2. Se ho un immagine di 100px e la risoluzione base è mdpi(160
dpi che corrisponde al rapporto 4) si ottiene: • ldpi: 75 × 75, cioè 3/4 della risoluzione base (100 * 3 / 4 = 75); • mdpi: 100 × 100; • hdpi: 150 × 150, cioè una volta e mezzo la risoluzione base
(100 * 6 / 4 = 100 * 3 / 2 = 100 * 1,5 = 150); • xhdpi: 200 × 200, cioè il doppio della risoluzione base (100 * 8
/ 4 = 100 * 2 = 200) a queste risoluzioni dovrebbe corrispondere Google TV, non gli smartophones.
![Page 54: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/54.jpg)
www.follow-app.it /91
EMULATORI
Laboratorio 54
1. QVGA (240x320, low density, small screen)
2. HVGA (320x480, medium density, normal screen)
3. WVGA800 (480x800, high density, normal screen)
4. WVGA854 (480x854 high density, normal screen)
![Page 55: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/55.jpg)
www.follow-app.it /91
INTENT ESPLICITO
Laboratorio 55
1. Si tratta di un utilizzo dell’oggetto Intent nel quale si esplicita l’oggetto che si vuole richiamare :
Intent i = new Intent(this, ActivityTwo.class); i.putExtra("Value1", "This value one for ActivityTwo "); i.putExtra("Value2", "This value two ActivityTwo");
![Page 56: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/56.jpg)
www.follow-app.it /91
INTENT IMPLICITO
Laboratorio 56
1. L’intent implicito non specifica una classe Java bensì un azione e opzionalmente un uri associata all’azione.
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://gmarz83.altervista.org")); 2. Android individua quale componente è registrato per
gestire tale azione 3. Se individua un solo componente, esegue l’azione se ce
n’è più di uno un dialog chiede all’utente verso quale componente dirigire l’azione
![Page 57: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/57.jpg)
www.follow-app.it /91
TRASFERIMENTO DATI
Laboratorio 57
1. Intent espliciti o impliciti posso contentere extra dati
Intent sharingIntent = new Intent(Intent.ACTION_SEND); sharingIntent.setType("text/plain"); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, " allegato!"); startActivity(Intent.createChooser(sharingIntent,"condividi"));
![Page 58: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/58.jpg)
www.follow-app.it /91
TRASFERIMENTO DATI 2
Laboratorio 58
1. Il componente che riceve l’intent estrae i dati così
Bundle extras = getIntent().getExtras();
if (extras == null) { return; }
String value1 = extras.getString(Intent.EXTRA_TEXT);
if (value1 != null) { // fai qualcosa}
![Page 59: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/59.jpg)
www.follow-app.it /91
CHIAMARE ACTIVITY CON RISULTATO
Laboratorio 59
Intent i = new Intent(this, ActivityTwo.class); i.putExtra("Val1", “valore 1");
i.putExtra("Val2", “valore 2");
startActivityForResult(i, REQUEST_CODE);
![Page 60: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/60.jpg)
www.follow-app.it /91
CHIAMARE ACTIVITY CON RISULTATO 2
Laboratorio 60
@Override public void finish() {
Intent data = new Intent();
data.putExtra("returnKey1", "risultato1"); data.putExtra("returnKey2", "risultato2");
setResult(RESULT_OK, data);
super.finish();
}
![Page 61: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/61.jpg)
www.follow-app.it /91
CHIAMARE ACTIVITY CON RISULTATO 3
Laboratorio 61
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) { if (data.hasExtra("returnKey1")) { Toast.makeText(this, data.getExtras().getString("returnKey1"), Toast.LENGTH_SHORT).show(); } } }
![Page 62: follow-app BOOTCAMP 3: Android](https://reader031.vdocuments.mx/reader031/viewer/2022020110/55548ff9b4c905186d8b470a/html5/thumbnails/62.jpg)
www.follow-app.it /91
INTENT FILTER
Laboratorio 62
1. Un componente si registra e si abilita alla ricezione di determinati intent attraverso la definizione di un intent filter , che avviene nel manifest.xml
<activity android:name=".BrowserActivitiy" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http"/> </intent-filter> </activity>