ALMA MATER STUDIORUM - UNIVERSITÀ DI BOLOGNA FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI Corso di Laurea in Informatica Organizzazione dell'interfaccia utente su Android Relatore: Prof. Vittorio Ghini Vincenzo Colucci Le interfacce Mezzo tramite il quale l’uomo interagisce con un servizio. Vantaggi derivanti da una buona interfaccia: ● Efficienza ● Facilità d'uso ● Ergonomia ● Design Android Perché l'ho scelto È Il sistema operativo di larga diffusione più libero attualmente sul mercato. Libertà come Inoltre Disponibilità del codice sorgente. È basato su kernel Linux. Indipendenza dal fornitore del OS. Ampia possibilità di azione sul dispositivo. È economicamente accessibile. L'SDK è disponibile per ogni sistema operativo (Windows, Mac, Linux) Scenario iOS Funzionalità ridotte. Alta intuitività. Semplicità d'uso. Look delle icone unificato. Windows Phone 7 Soluzione originale. Avvio rapido efficiente. Moderata versatilità. Stile ben definito. Home su Android È basata sul modello a scrivania. Fornisce massima versatilità. Tende al disordine. Manca di meccanismi di catalogazione. Non riesce a fornire uno stile unificato. È rimpiazzabile da altri programmi detti Launcher, tuttavia sono poche soluzioni originali. Obiettivo Creazione di un interfaccia home su Android basata sui seguenti principi: ● Semplicità ● Catalogazione ● Performance ● ● ● Eliminazione delle ridondanze Accessibilità Possibilità di personalizzazione Progettazione dell'interfaccia Avvio rapido (in alto al centro) È orientato alle azioni piuttosto che alle applicazioni. Task Manager (in alto a destra) Si pone come rimedio ad una mancanza del sistema operativo. Pannello Widget (in alto a sinistra) Permette di utilizzare i Widget disponibili, imponendo un ordine. Menu applicazioni (in basso a sinistra) Presenta le applicazioni sotto determinate categorie. Strumenti di sviluppo Sistema operativo Ubuntu 11.04, per la presenza del terminale e per la semplice reperibilità di software. IDE Eclipse 3.7.0, per il supporto ufficiale di Google. Android SDK 8, per la più ampia compatibilità. Software Versioning Mercurial, per la possibilità di lavorare in locale e per la disponibilità di hosting gratuito Editor Grafici Gimp, per elaborare anteprime e bozze grafiche. Inkscape, per disegnare gli elementi grafici da utilizzare nel progetto e permettere facili modifiche grazie al formato vettoriale. Tutti i software utilizzati sono gratuiti e opensource Architettura ACTIVITY RECEIVER ACTIVITY ACTIVITY WorkSpace UpdateRcivr Drawer Preferences LISTVIEW GRIDVIEW CatList AppGrid RELATIVE LYT ASYNCTASK PnlManager dbUpdate PANEL PANEL PANEL IMAGEVIEW WidgetPnl StandbyPnl TaskPnl CatIcon TEXTVIEW AppIcon LINEAR LYT LISTVIEW ADAPTER DATABASE ClockWidget TaskList TaskAdptr AppDb RELATIVE LYT ADAPTER FlowerAptr Flower IMAGEVIEW Bubble DATABASE FlowerDb Java 3000 LOC XML 1200 LOC ADAPTER AppAdptr Principali problemi affrontati Problema Soluzione Rilevamento delle azioni touch e gestione dei conflitti. Individuazione dei casi di conflitto e definizione delle precedenze. Sincronizzazione del database delle applicazioni installate. Receiver per intercettare le azioni di installazione e rimozione di nuovi elementi. Lag grafici durante lo scroll degli elementi di liste e griglie. Implementazione di un sistema di cache all'interno dei componenti Adapter Disegno degli elementi sullo schermo, e compatibilità tra diversi dispositivi. Utilizzo di dp in luogo dei px dove possibile, implementazione di specifici algoritmi per il disegno di alcuni componenti. Valutazione Punti positivi Punti negativi Successo di alcune scelte verificato con l'uso quotidiano di una versione alpha. Ho sottostimato il tempo richiesto dallo sviluppo del progetto. Modularità del progetto che permette di lavorare agevolmente sul codice con l'aumentare delle dimensione. La realizzazione grafica lascia a desiderare. Moderato utilizzo delle risorse del sistema, in linea, se non inferiore, con la concorrenza. Possibilità di personalizzazione estese tramite il supporto a temi e la compatibilità con quelli già creati per altri launcher. Infine è mancata una visione di insieme, i vari pannelli sono completamente indipendenti tra di loro. In questo, non sono riuscito a staccarmi dal modello desktop.