2016-03-24 13 views
7

tl; dr Come si convertono le misurazioni di pixel su un dispositivo in misure di pixel su un altro?Come verificare lo sviluppo pixel-perfect (digitale) in Android?

Ho progettato un'app per Android con tutti gli schermi che misurano 720x1280 px. Ho assunto che questo è a 2.0 xhdpi che significa dimensioni pixel digitali di 360x640 dp.

Ora in QA ho trovato alcune incongruenze sul mio Nexus 5x, preso screenshot e inserito in Photoshop per confermare/misurare gli errori. Il Nexus 5x è 1080x1920 px, ma è a 2,6 xxhdpi che converte in 411x731 dp.

Non solo una semplice scala non riesce?

Non è semplice come trasferire gli screenshot di Nexus (1080 larghezza) in Photoshop e ridimensionarli alla larghezza 720, giusto? Ciò non tiene conto della densità dei pixel.

Detto in un altro modo. Se un quadrato è 100px (50dp) sul mio disegno @ 2x, quanto dovrei aspettarmi che fosse sullo screenshot del Nexus?

Link utili

+2

Ah, il dolore di queste cose. In bocca al lupo. –

risposta

9

Ci sono più domande/pensieri nel tuo post.

Per iniziare:

Come posso convertire le misurazioni in pixel su un dispositivo ad un pixel misurazioni su un altro?

E:

Ho progettato un app Android con tutte le schermate di misura 720x1280 px.

ho intenzione di assumere vuol dire che hai fatto alcune immagini/documenti UX digitali a 720x1280 e ora stanno costruendo le immagini di codice/carico per la vostra applicazione e hanno incorrere in problemi perché i dispositivi differenti si stanno comportando in un modo inaspettato? Correggimi se questo è inaccurato

La progettazione per Android e il mobile in generale, è per lo meno in un certo senso chiedersi cosa si desidera che l'utente sperimenti e come farlo all'interno delle regole del framework per creare un'interfaccia.

Google states che quando si tratta di dispositivi più si dovrebbe puntare per "l'indipendenza densità":

L'applicazione realizza "indipendenza densità" quando conserva la dimensione fisica (dal punto di vista dell'utente) di interfaccia utente elementi visualizzati su schermi con densità diverse.

L'immagine sottostante rappresenta il "cattivo" di progettazione (non prende in considerazione dp)

enter image description here

L'immagine in basso rappresenta un buon "densità indipendente" Design:

enter image description here

http://developer.android.com/guide/practices/screens_support.html#density-independence

In altre parole, se si tiene conto dell'indipendenza dalla densità durante la progettazione e la creazione dell'app, l'utente dovrebbe vedere immagini e/o viste in modo coerente su tutti i dispositivi. La verifica di immagini e viste su diversi dispositivi non deve essere eseguita in Photoshop o simili, ma deve essere eseguita nell'emulatore fornito in Android Studio e/o su più dispositivi fisici con varie versioni del sistema operativo e/o dimensioni dello schermo (come sono a vostra disposizione).

Un'altra cosa da tenere a mente:

enter image description here

ti ha chiesto:

ha detto in un altro modo. Se un quadratino è 100px (50dp) sul mio disegno @ 2x, come dovrei aspettarmi che lo sia sullo screenshot del Nexus?

enter image description here

Vai alla pagina Google Device Metrics:

enter image description here

Clicca su Nexus 5x, e guardare le informazioni dispositivo dal pannello a tendina in:

enter image description here

Accor ding a queste informazioni, il Google Nexus 5x è 424px/in IE 424dpi

utilizzare l'equazione px = 50dp * (dpi/160)

px = 132.5

E 'prezioso per dare anche un vero e proprio - esempio di come calcolare le dimensioni di pixel e dp quando si utilizza un dispositivo specifico, e spero che questo ti aiuti a passare al passaggio successivo e rispondi alla domanda di cui sopra in futuro.

Diciamo che abbiamo alcune immagini che vogliamo inserire "perfettamente" su un dispositivo quando il dispositivo è in orientamento verticale. Come questo:

enter image description here

E diciamo il nostro dispositivo è il Nexus 5. Come si può vedere nell'esempio di cui sopra, ci sono 7 identiche immagini affiancate, da sinistra a destra dello schermo .Con il seguente esempio, probabilmente si dovrebbe essere in grado di capire "quanto grande [si] dovrebbe aspettare [Immagini] di essere" per diverse circostanze:

  1. Sappiamo che il Nexus 5 è un dispositivo xxhdpi perché abbiamo guardato esso in Google’s Device Metrics:

enter image description here

  1. Cominciamo facendo i calcoli tenendo conto di imbottitura. Suppongo di avere padding di default - controllarlo fuori nella vostra valori/dimens.xml per assicurarsi:

enter image description here

Ecco 32DP dobbiamo rendere conto.

3. Quindi, sappiamo che la larghezza del Nexus 5 è 360dp o 1080px, quindi cerchiamo di capire l'ampiezza di uno dei nostri sette immagini:

Facciamo la decisione che stiamo andando a importa la nostra immagine con Input Density of xxdpi in mente.

360dp (full) - 32DP (padding) = 328dp (rimanente per 7 immagini)

328dp/7 = 46.9dp (circa)

Andiamo a androidpixels, altamente sito raccomandato per le conversioni, e guarda cosa significa in pixel - in questo caso, è uguale a 140.7px.

enter image description here

  1. creare una versione png della nostra immagine che è 140.7px e importarlo come xxhdpi (Importeremo nella stessa firma dp come dispositivo).

Poiché Adobe Illustrator e Adobe Photoshop non consentono dimensioni decimali, è possibile utilizzare 140 e fare la differenza con la spaziatura in Android Studio. La matematica suggerisce che se ci sono 6 intervalli tra queste 7 immagini, e abbiamo perso 0.7px per immagine, è 6 * 0.7px = 4.2px che potremmo dover rendere conto da qualche parte.

  1. Dopo aver importato le immagini in Final Android Resizer, altamente consigliato per ridimensionare le immagini - o semplicemente importarlo nella corretta cartella di drawable - c'è un ultimo passo: aggiornare il content_main.xml con il corretto immagine, e assicurarsi di farlo per tutti gli elementi di sette ImageView:

enter image description here

Questo è quello che dovrebbe finalmente essere simile:

enter image description here

Ripetere questi passaggi con le dimensioni del dispositivo in questione.

Anche questo non è l'unico modo per farlo. È possibile utilizzare le directory di layout per individuare specifiche dimensioni del dispositivo e influire sulle visualizzazioni al loro interno.Vedere un altro post che ho fatto su questo:

Differences between scaling images with dpi as opposed to dp

Problemi correlati