Organizzazione dell`interfaccia utente su Android

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.