AA 2014/15 Risorse Android Programmazione di disposi8vi mobili -­‐ v1.0 1 Filosofia Android • Esternalizzare le risorse dell'app per ges8rle separatamente – immagini, stringhe, grafica, etc. • Fornire risorse alterna8ve per disposi8vi diversi con configurazioni diverse – forma, dimensione schermo, densità pixel , lingua, etc Programmazione di disposi8vi mobili -­‐ v1.0 Programmazione Java per Disposi8vi Mobili 2 1 AA 2014/15 Risorse alterna0ve posso specificare layout differen8 per schermi differen8 aggiungendo un file xml Programmazione di disposi8vi mobili -­‐ v1.0 3 Cartella delle risorse • Le risorse sono contenute nella cartella res • La cartella res con8ene soOocartelle il cui nome è definito – tabella cartelle Programmazione di disposi8vi mobili -­‐ v1.0 Programmazione Java per Disposi8vi Mobili 4 2 AA 2014/15 Risorse Alterna0ve • Per fornire risorse alterna8ve si creano delle soOocartelle di res con nomi defini8 • Schema dei nomi – <resources_name>-­‐<config_qualifier> • resources_name: nome della cartella da tabella • config_qualifier: configurazione specifica come sequenza ordinata di qualificatori • Qualificatori – lingua, densità, orientamento, etc. – tabella Programmazione Java per Disposi8vi Mobili 5 Nomi so=ocartelle • I qualificatori si concatenano con un traWno – drawable-­‐en-­‐rUS-­‐land • US-­‐English devices in landscape orienta8on • Devono comparire nell'ordine della tabella – Wrong: drawable-­‐hdpi-­‐port/ – Correct: drawable-­‐port-­‐hdpi/ • Le cartelle non si possono annidate – Wrong: res/drawable/drawable-­‐en/. • I valori sono case-­‐insensi8ve. • Potete fornire un solo valore per qualificatore in una cartella Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 6 3 AA 2014/15 Scelta della risorsa La selezione avviene confrontando le risorse fornite con le caraOeris8che del device Eccezione: la screen density non è mai eleminata, si sceglie il più vicino Programmazione Java per Disposi8vi Mobili 7 Scelta della risorsa • Risorse fornite drawable/ drawable-­‐en/ drawable-­‐fr-­‐rCA/ drawable-­‐en-­‐port/ drawable-­‐en-­‐notouch-­‐12key/ drawable-­‐port-­‐ldpi/ drawable-­‐port-­‐notouch-­‐12key/ • Configurazione device Locale = en-­‐GB Screen orienta8on = port Screen pixel density = hdpi Touchscreen type = notouch Primary text input method = 12key Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 8 4 AA 2014/15 Eliminare contraddizioni • Risorse fornite drawable/ drawable-­‐en/ drawable-­‐fr-­‐rCA/ drawable-­‐en-­‐port/ drawable-­‐en-­‐notouch-­‐12key/ drawable-­‐port-­‐ldpi/ drawable-­‐port-­‐notouch-­‐12key/ • Configurazione device Locale = en-­‐GB Screen orienta8on = port Screen pixel density = hdpi Touchscreen type = notouch Primary text input method = 12key Programmazione Java per Disposi8vi Mobili 9 Scorrimento ed eliminazioni • MMC, Language, Layout, SW, W, H, size, aspect, orient., etc. MMC non fa niente ma Language elimina chi non lo ha • Risorse fornite drawable/ drawable-­‐en/ drawable-­‐en-­‐port/ drawable-­‐en-­‐notouch-­‐12key/ drawable-­‐port-­‐ldpi/ drawable-­‐port-­‐notouch-­‐12key/ • Configurazione device Locale = en-­‐GB Screen orienta8on = port Screen pixel density = hdpi Touchscreen type = notouch Primary text input method = 12key Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 10 5 AA 2014/15 Tipi di risorse • Risorse di 8po valore • File come risorse – eg. l’icona per lanciare la ac8vity principale Programmazione di disposi8vi mobili -­‐ v1.0 11 Risorse valori • Sono contenute in file xml nella cartella res/values • Sono dichiarate in fra tag specifici – – – – – <string>, <string-­‐array>, <integer-­‐array> <color> <drawable> <style> <dimension> Programmazione di disposi8vi mobili -­‐ v1.0 Programmazione Java per Disposi8vi Mobili 12 6 AA 2014/15 File come risorse • Alcuni file sono risorse – Non i valori contenu8 – es. le immagini, i file xml • I file vanno inseri8 in cartelle specifiche – Le immagini in res/drawable – Le icone in mipmap – I file xml generici in res/xml – raw con8ene file qualunque Programmazione di disposi8vi mobili -­‐ v1.0 13 Risorse di 0po Layout • Ogni ac8vity ha almeno un layout – sono contenu8 nella cartella layout • Serve a posizionare degli “elemen8 grafici” sullo schermo – le view – Esempi -­‐ ResourceLayout // ResourceColor Programmazione di disposi8vi mobili -­‐ v1.0 Programmazione Java per Disposi8vi Mobili 14 7 AA 2014/15 Iden0ficatori per le risorse • Ad ogni risorsa viene associato un “nome” • Sintassi per iden8ficatori di risorse – @[package:][+]type/name • Esempi – @string/app_name – @+id/myBuOon – @id/myBuOon • Gli ID sono risorse par8colari per assegnare iden8fica8vi unici ai componen8 grafici Programmazione di disposi8vi mobili -­‐ v1.0 15 Programmazione Java per Disposi8vi Mobili 16 Esempi Programmazione Java per Disposi8vi Mobili 8 AA 2014/15 La classe R • In compilazione ad ogni risorsa viene associata una costante di 8po int • la classe R è contenuta nella cartella generated Programmazione di disposi8vi mobili -­‐ v1.0 17 Iden0ficatori in java getResources().getString(R.string.hello); • id risorse 8po file – R.<cartella>.<file name> • es. R.xml.libri • id risorse 8po valore – R.<8po>.<nome> • es. R.string.app_8tle Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 18 9 AA 2014/15 Esempi Programmazione Java per Disposi8vi Mobili 19 Le risorse di 0po dimension Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 20 10