80

ho bisogno di chiarire qualche dubbio circa le risorse di immagini per la mia app,immagine Circa Android e patrimoniale formati

se a specificare in un file XML che l'altezza di qualcosa [View Image] è l'altezza di 50 dip

quale tipo di schermo dovrei scegliere dalla cartella delle risorse?

drawable, hdpi, ldpi, mdpi, xhdpi, 

per avere un'immagine altezza 50 px,

e quale è la percentuale più grande, immagini di dimensioni più piccole rispetto all'immagine di base,

come in IOS, @ 2x, è letteralmente 2 volte la dimensione dell'immagine, e si dice programmaticamente la dimensione normale,

grazie!

+1

La tua domanda è spiegata nel manuale di Android: http://developer.android.com/guide/practices/screens_support.html –

risposta

349

mdpi è la densità di riferimento, ovvero 1 px su un display mdpi equivale a 1 dip. Il rapporto per il ridimensionamento attività è:

ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 
0.75 | 1 | 1.33 | 1.5 | 2  | 3  | 4 

Anche se non si ha realmente bisogno di preoccuparsi di tvdpi a meno che non si sta sviluppando appositamente per Google TV o il Nexus 7 originale - ma anche Google si limita a raccomandare utilizzando hdpi beni.

Ciò significa che se si sta facendo un'immagine 48dip e si pianifica di supportare fino a xxhdpi resolution, si dovrebbe iniziare con un'immagine a 144px (192px se si desiderano risorse native per xxxhdpi) e creare le seguenti immagini per le densità:

ldpi | mdpi | tvdpi | hdpi | xhdpi  | xxhdpi | xxxhdpi 
36 x 36 | 48 x 48 | 64 x 64 | 72 x 72 | 96 x 96 | 144 x 144 | 192 x 192 

E questi dovrebbero mostrare più o meno le stesse dimensioni su qualsiasi dispositivo, a condizione che hai messo questi in cartelle specifiche densità (ad esempio drawable-xhdpi, drawable-hdpi, etc.)

Per riferimento, le densità di pixel per questi sono:

ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 
120 | 160 | 213 | 240 | 320 | 480  | 640 
+31

Questa è la spiegazione più semplice di questo argomento che ho visto online ovunque. Ho letteralmente segnato il mio marchio sulla stazione di lavoro dei miei designer lol –

+10

Haha, fantastico! : P Solo informazioni aggiunte per XXHDPI. – kcoppock

+0

Come decidi di dover iniziare da 48dip? Supponiamo che tu abbia solo un tablet (mdpi) a portata di mano, inizi con una dimensione casuale e iterazioni finché non appare "abbastanza grande"? – phtrivier

4

kcoppock ha fatto un ottimo lavoro spiegando le densità dello schermo Andorid. Vorrei solo aggiungere un altro punto riguardo alla domanda originale.

L'icona del launcher di Tablet Android utilizza un bucket di densità superiore.

Secondo gli sviluppatori di Google Google+ di Nick Butcher inviare

Lo splendido schermo sul Nexus 10 cade nel secchio della densità XHDPI. Sui tablet, Launcher utilizza le icone da un bucket di densità su [0] per renderle leggermente più grandi. Per garantire che l'icona del tuo launcher (probabilmente l'asset più importante della tua app) sia nitida, devi aggiungere un'icona 144 * 144px nella cartella drawable-xxhdpi o drawable-480dpi.

fonte Ricerca here

22

Sulla base s' kcoppock risposta che ho creato il seguente script di shell per ridimensionare automaticamente tutte le immagini al formato corretto e copiarli nella rispettiva Android drawable- * - cartelle!

Creare uno script di shell e incollare il seguente codice:

createAndroidImages.sh

#!/bin/bash 

read -p "Please enter the subfolder of the original images? " folder 
read -p "How many DP (width) should the image have? " dp 

for i in $(find $folder/. -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done 

mkdir drawable-ldpi 
mkdir drawable-mdpi 
mkdir drawable-tvdpi 
mkdir drawable-hdpi 
mkdir drawable-xhdpi 
mkdir drawable-xxhdpi 
mkdir drawable-xxxhdpi 

cp $folder/* drawable-ldpi/ 
cp $folder/* drawable-mdpi/ 
cp $folder/* drawable-tvdpi/ 
cp $folder/* drawable-hdpi/ 
cp $folder/* drawable-xhdpi/ 
cp $folder/* drawable-xxhdpi/ 
cp $folder/* drawable-xxxhdpi/ 

sips -Z $(echo $dp*3/4 | bc) drawable-ldpi/* 
sips -Z $(echo $dp | bc) drawable-mdpi/* 
sips -Z $(echo $dp*4/3 | bc) drawable-tvdpi/* 
sips -Z $(echo $dp*3/2 | bc) drawable-hdpi/* 
sips -Z $(echo $dp*2 | bc) drawable-xhdpi/* 
sips -Z $(echo $dp*3 | bc) drawable-xxhdpi/* 
sips -Z $(echo $dp*4 | bc) drawable-xxxhdpi/* 

Mettere lo script in una cartella e le immagini originali in una sottocartella per esempio:

/ 
.. createAndroidImages.sh 
.. originalImages/ 
....a123.png 
....b456.png 

Eseguire lo script della shell nel terminale: sh createAndroidImages.sh

Per copiare le immagini create direttamente sul tuo Studio Project Android:

cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/ 

Il gioco è fatto! Spero che questo aiuti qualcuno!

P.S. Si prega di notare che le immagini originali dovrebbero avere almeno quattro volte la larghezza in pixel, rispetto alla larghezza desiderata in dpi (ad esempio 4 (fattore xxxhdpi) * 30 dpi => 120 px) per risultati ottimali.

1

Ecco i miei calcoli per l'upscaling e ridimensionamento delle immagini per Android-

ldpi (120 dpi, schermo a bassa densità) - 36px x 36px (0,19) (1)

MDPI (160 dpi, schermo a media densità) - 48px x 48px (0,25) (1,33)

hdpi (240 dpi, schermo ad alta densità) - 72px x 72px (0,38) (2)

xhdpi (320 dpi, schermo extra-alta densità) - 96px x 96px (0,5) (2,67)

xxhdpi (480 dpi, schermo extra-extra-alta densità) - 144px x 144px (0,75) (4)

xxxhdpi (640 dpi, schermo extra-extra-extra-alta densità) - 192px x 192px (1,0) (5,33)

My short article è utile per creare risorse di immagini con ImageMagick, quando ci sono più immagini.

Problemi correlati