disconoscimento
Questa risposta è del 2013 ed è gravemente obsoleta. A partire da Android 3.2 ora ci sono 6 gruppi di densità dello schermo. Questa risposta sarà aggiornata non appena sarò in grado, ma senza ETA. Fare riferimento alla documentazione ufficiale per tutte le densità al momento (anche se le informazioni su specifiche dimensioni dei pixel sono come sempre difficili da trovare).
Ecco la versione tl / dr
Crea 4 immagini, una per ogni densità dello schermo:
- xlarge (xhdpi): 640x960
- grande (hdpi): 480x800
- medio (mdpi): 320x480
- piccolo (ldpi): 240x320
Leggi l' introduzione dell'immagine a 9 patch nella Guida per gli sviluppatori Android
- Progetta immagini con aree che possono essere estese in modo sicuro senza compromettere il risultato finale
Con questo, Android selezionerà il file appropriato per la densità dell'immagine del dispositivo, quindi allungherà l'immagine secondo lo standard a 9 patch.
fine di tl; dr. Post completo in anticipo
Sto rispondendo in merito all'aspetto del design relativo alla domanda. Non sono uno sviluppatore, quindi non sarò in grado di fornire codice per l'implementazione di molte delle soluzioni fornite. Purtroppo, il mio intento è quello di aiutare i designer che sono persi quanto me quando ho contribuito a sviluppare la mia prima app per Android.
Adatto a tutte le taglie
Con Android, le aziende possono sviluppare telefoni cellulari e tavoli di quasi tutte le dimensioni, con quasi tutte le risoluzioni che desiderano. Per questo motivo, non esiste una "dimensione dell'immagine corretta" per una schermata iniziale, poiché non esistono risoluzioni fisse dello schermo. Ciò rappresenta un problema per le persone che vogliono implementare una schermata iniziale.
I tuoi utenti vogliono davvero vedere una schermata iniziale?
(In una nota a margine, gli splash screen sono in qualche modo scoraggiati tra i tipi di usabilità. Si sostiene che l'utente sappia già quale app ha toccato e non è necessario marcare l'immagine con uno splash screen, poiché interrompe solo l'esperienza utente con un "annuncio". Dovrebbe essere usato, tuttavia, in applicazioni che richiedono un caricamento considerevole quando inizializzato (5s +), inclusi giochi e simili, in modo che l'utente non si blocchi se si chiede se l'app si è bloccata o meno)
Densità dello schermo; 4 lezioni
Quindi, date le diverse risoluzioni dello schermo nei telefoni sul mercato, Google ha implementato alcune alternative e soluzioni ingegnose che possono aiutare. La prima cosa che devi sapere è che Android separa TUTTE le schermate in 4 densità di schermate distinte:
- Bassa densità (ldpi ~ 120dpi)
- Densità media (mdpi ~ 160 dpi)
- Alta densità (hdpi ~ 240 dpi)
- Densità extra alta (xhdpi ~ 320dpi) (Questi valori dpi sono approssimazioni, poiché i dispositivi personalizzati avranno valori dpi variabili)
Ciò che tu (se sei un designer) devi sapere da questo è che Android sostanzialmente sceglie tra 4 immagini da visualizzare, a seconda del dispositivo. Quindi in pratica devi progettare 4 immagini diverse (anche se è possibile svilupparne altre per formati diversi come widescreen, modalità verticale / orizzontale, ecc.).
Con questo in mente, sappiate questo: a meno che non progettiate uno schermo per ogni singola risoluzione utilizzata in Android, l'immagine si allungherà per adattarsi alle dimensioni dello schermo. E a meno che la tua immagine non sia sostanzialmente una sfumatura o una sfocatura, otterrai una distorsione indesiderata con l'allungamento. Quindi hai sostanzialmente due opzioni: creare un'immagine per ciascuna combinazione dimensione / densità dello schermo o creare quattro immagini a 9 patch.
La soluzione più difficile è progettare una schermata iniziale diversa per ogni singola risoluzione. Puoi iniziare seguendo le risoluzioni nella tabella alla fine di questa pagina (ce ne sono altre. Esempio: 960 x 720 non è elencato lì). E supponendo che tu abbia qualche piccolo dettaglio nell'immagine, come un piccolo testo, devi progettare più di uno schermo per ogni risoluzione. Ad esempio, un'immagine 480x800 visualizzata su uno schermo medio potrebbe apparire ok, ma su uno schermo più piccolo (con densità / dpi più elevati) il logo potrebbe diventare troppo piccolo o parte del testo potrebbe diventare illeggibile.
Immagine a 9 patch
L'altra soluzione è creare un'immagine a 9 patch . È fondamentalmente un bordo trasparente di 1 pixel attorno all'immagine e disegnando pixel neri nella parte superiore e sinistra di questo bordo è possibile definire quali parti dell'immagine potranno essere allungate. Non entrerò nei dettagli di come funzionano le immagini a 9 patch ma, in breve, i pixel che si allineano ai segni nell'area superiore e sinistra sono i pixel che verranno ripetuti per allungare l'immagine.
Alcune regole di base
- Puoi creare queste immagini in Photoshop (o in qualsiasi software di modifica delle immagini in grado di creare con precisione png trasparenti).
- Il bordo di 1 pixel deve essere COMPLETO TRASPARENTE.
- Il bordo trasparente da 1 pixel deve essere tutto intorno all'immagine, non solo in alto e a sinistra.
- puoi disegnare solo pixel neri (# 000000) in quest'area.
- I bordi superiore e sinistro (che definiscono lo stiramento dell'immagine) possono avere solo un punto (1px x 1px), due punti (entrambi 1px x 1px) o UNA linea continua (larghezza x 1px o 1px x altezza).
- Se si sceglie di utilizzare 2 punti, l'immagine verrà espansa in modo proporzionale (quindi ogni punto a turno si espanderà fino a raggiungere la larghezza / altezza finale)
- Il bordo 1px deve essere in aggiunta alle dimensioni del file di base previste. Quindi un'immagine 100x100 a 9 patch deve avere effettivamente 102x102 (100x100 + 1px in alto, in basso, a sinistra ea destra)
- Le immagini a 9 patch devono terminare con * .9.png
Quindi puoi posizionare 1 punto su entrambi i lati del logo (nel bordo superiore) e 1 punto sopra e sotto di esso (sul bordo sinistro) e queste righe e colonne contrassegnate saranno gli unici pixel da allungare.
Esempio
Ecco un'immagine a 9 patch, 102x102px (dimensione finale 100x100, ai fini dell'app):
Ecco uno zoom del 200% della stessa immagine:
Notare i segni 1px in alto e a sinistra che indicano quali righe / colonne si espandono.
Ecco come sarebbe questa immagine in 100x100 all'interno dell'app:
Ed ecco cosa vorrebbe se espanso a 460x140:
Un'ultima cosa da considerare. Queste immagini potrebbero avere un bell'aspetto sullo schermo del monitor e sulla maggior parte dei cellulari, ma se il dispositivo ha una densità dell'immagine (dpi) molto elevata, l'immagine sembrerebbe troppo piccola. Probabilmente ancora leggibile, ma su un tablet con risoluzione 1920x1200, l'immagine apparirebbe come un quadrato molto piccolo nel mezzo. Quindi qual è la soluzione? Progetta 4 diverse immagini del launcher a 9 patch, ognuna per un set di densità diverso. Per garantire che non si verifichi alcun restringimento, è necessario progettare la risoluzione comune più bassa per ciascuna categoria di densità. Il restringimento non è auspicabile in questo caso perché le 9 patch rappresentano solo lo stiramento, quindi in un processo di restringimento il testo piccolo e altri elementi potrebbero perdere leggibilità.
Ecco un elenco delle risoluzioni più piccole e più comuni per ogni categoria di densità:
- xlarge (xhdpi): 640x960
- grande (hdpi): 480x800
- medio (mdpi): 320x480
- piccolo (ldpi): 240x320
Quindi, progetta quattro schermate iniziali con le risoluzioni sopra, espandi le immagini, posiziona un bordo trasparente 1px attorno alla tela e segna quali righe / colonne saranno estensibili. Tieni presente che queste immagini verranno utilizzate per QUALSIASI dispositivo nella categoria di densità, quindi l'immagine ldpi (240 x 320) potrebbe essere allungata a 1024x600 su un tablet molto grande con una densità dell'immagine ridotta (~ 120 dpi). Quindi 9-patch è la soluzione migliore per lo stretching, purché non desideri una foto o una grafica complicata per una schermata iniziale (tieni presente questi limiti mentre crei il design).
Ancora una volta, l'unico modo per evitare questo allungamento è progettare uno schermo per ciascuna risoluzione (o uno per ogni combinazione risoluzione-densità, se si desidera evitare che le immagini diventino troppo piccole / grandi su dispositivi ad alta / bassa densità) o per dire l'immagine non si allunga e appare un colore di sfondo ovunque si verifichi lo stiramento (ricorda anche che un colore specifico reso dal motore Android probabilmente avrà un aspetto diverso dallo stesso colore specifico reso da Photoshop, a causa dei profili colore).
Spero che questo abbia senso. In bocca al lupo!