Android: dimensioni dell'immagine di sfondo (in pixel) che supportano tutti i dispositivi


114

Sto creando un'applicazione che verrà eseguita su tutti i dispositivi Android. Voglio creare grafica xhdpi per la mia app. La mia app è a schermo intero. Sono confuso nella creazione di grafica. qualcuno può dirmi le dimensioni migliori della mia immagine di sfondo in pixel.

Per esempio:

  • xhdpi: 720x1280 px
  • hdpi: 480 x 800 px
  • mdpi: 320 x 480 px
  • ldpi: 240 x 320 px

Suggeriscimi le dimensioni migliori che appariranno su tutti i dispositivi buoni. Perché la mia grafica è il cuore della mia app.

Voglio che ogni dispositivo ottenga la migliore immagine che desidera. Android non sarà coinvolto nella compressione o espansione dell'immagine.


3
Leggi il supporto per più schermi Android della documentazione Android, forniscono lo standard per l'interfaccia utente
RajeshVijayakumar

Usa questa soluzione unica per tutti i dispositivi vecchi e nuovi e per i prossimi. stackoverflow.com/a/40255870/2489061
Umer

Risposte:


199

Le seguenti sono le dimensioni migliori per l'esecuzione dell'app su tutti i dispositivi. Per comprendere più schermate di supporto devi leggere http://developer.android.com/guide/practices/screens_support.html

xxxhdpi: 1280x1920 px
xxhdpi: 960x1600 px
xhdpi: 640x960 px
hdpi: 480x800 px
mdpi: 320x480 px
ldpi: 240x320 px

10
XX dovrebbe essere 2x HDPI
LarryBud

1
interessante, il nexus 5 è xxhdpi, ma la dimensione dello schermo è 1080x1920
Roman

3
L'LG G3 ha una risoluzione di 1440 x 2560 e utilizza xxxhdpi.
Roel

1
Questo è il problema / sfida principale con Android, non ci sono dimensioni fisse per hdpi, xhdpi, ecc. Perché ogni produttore può realizzare un telefono / tablet di dimensioni diverse, a differenza di IOS in cui solo Apple lo produce. Guarda la sezione sulla gamma: developer.android.com/guide/practices/…
toidiu

Usa questa soluzione unica per tutti i dispositivi vecchi e nuovi e per i prossimi. stackoverflow.com/a/40255870/2489061
Umer

63

Matrici dei dispositivi Android

                            ldpi     mdpi     hdpi    xhdpi    xxhdpi      xxxhdpi
Launcher And Home           36*36    48*48   72*72    96*96    144*144     192*192
Toolbar And Tab             24*24    32*32   48*48    64*64    96*96       128*128
Notification                18*18    24*24   36*36    48*48    72*72       96*96 
Background                 240*320  320*480 480*800  768*1280  1080 *1920  1440*2560 

(Per un buon approccio meno le dimensioni della barra degli strumenti dall'altezza totale dello schermo di sfondo e quindi la grafica di progettazione degli schermi)

Per ulteriore assistenza (questo collegamento include anche i tablet):

https://design.google.com/devices/

Icone native di Android (consigliato) È possibile modificare il colore di queste icone a livello di programmazione . https://design.google.com/icons/


Perché le tesi non si allineano con i moltiplicatori qui suggeriti? developer.android.com/training/multiscreen/screendensities#java
Ben


5

Ho cercato su Internet le dimensioni corrette per queste densità per le immagini quadrate, ma non sono riuscito a trovare nulla di affidabile.

Se può consolare, riferendomi alla risposta di Veerababu Medisetti ho usato queste dimensioni per SQUARES :)

xxxhdpi: 1280x1280 px
xxhdpi: 960x960 px
xhdpi: 640x640 px
hdpi: 480x480 px
mdpi: 320x320 px
ldpi: 240x240 px

Usa questa soluzione unica per tutti i dispositivi vecchi e nuovi e per i prossimi. stackoverflow.com/a/40255870/2489061
Umer

4

Lo strumento GIMP è esattamente ciò di cui hai bisogno per creare le immagini per diversi dispositivi con risoluzione pixel.

Segui questi passi:

  1. Apri l'immagine esistente nello strumento GIMP.
  2. Vai al menu "Immagine" e seleziona "Scala immagine ..."
  3. Usa la dimensione pixel inferiore di cui hai bisogno:

    xxxhdpi: 1280x1920 px

    xxhdpi: 960 x 1600 px

    xhdpi: 640 x 960 px

    hdpi: 480 x 800 px

    mdpi: 320 x 480 px

    ldpi: 240 x 320 px

  4. Quindi "Esporta" l'immagine dal menu "File".


3

La mia comprensione è che se usi un Viewoggetto (come dovrebbe, ad es. android:windowBackground) Android ridimensionerà automaticamente l'immagine alla dimensione corretta. Il problema è che un ridimensionamento eccessivo può causare artefatti (sia durante il ridimensionamento verso l'alto che verso il basso) e la sfocatura. A causa delle varie risoluzioni e rapporti di aspetto sul mercato, è impossibile creare adattamenti "perfetti" per ogni schermo, ma puoi fare del tuo meglio per assicurarti che sia necessario solo un po 'di ridimensionamento e quindi mitigare gli effetti collaterali indesiderati . Quindi quello che farei è:

  • Attenersi al rapporto di ridimensionamento 3: 4: 6: 8: 12: 16 tra le sei densità generalizzate (ldpi, mdpi, hdpi, ecc.).
  • Non dovresti includere elementi xxxhdpi per gli elementi dell'interfaccia utente, questa risoluzione è pensata per l'upscaling solo delle icone del launcher (quindi solo per la cartella mipmap) ... Non dovresti usare il qualificatore xxxhdpi per gli elementi dell'interfaccia utente diversi dall'icona del launcher. ... sebbene ad es. sul Samsung edge 7 la chiamata getDisplayMetrics().densityrestituisce 4 (xxxhdpi), quindi forse questa informazione è obsoleta.
  • Quindi guarda i nuovi modelli di telefono sul mercato e trova quelli rappresentativi. Supponendo che il nuovo pixel di Google sia una buona rappresentazione di un telefono Android: ha una risoluzione 1080 x 1920 a 441 dpi e una dimensione dello schermo di 4,4 x 2,5 pollici . Quindi dai documenti per sviluppatori Android :

    • ldpi (basso) ~ 120 dpi
    • mdpi (medio) ~ 160 dpi
    • hdpi (alto) ~ 240 dpi
    • xhdpi (extra-alto) ~ 320 dpi
    • xxhdpi (extra-extra-alto) ~ 480 dpi
    • xxxhdpi (extra-extra-extra-alto) ~ 640 dpi

    Ciò corrisponde a uno xxhdpischermo. Da qui potrei ridimensionare questi 1080 x 1920 in base ai rapporti (3: 4: 6: 8: 12) sopra.

  • Potrei anche riconoscere che il downsampling è generalmente un modo semplice per ridimensionare e quindi potrei volere bitmap leggermente sovradimensionate in bundle nel mio apk (Nota: maggiore consumo di memoria). Ancora una volta assumendo che la larghezza e l'altezza dello schermo pixel siano rappresentative, scalerei 1080x1920 di un fattore 480/441, lasciando la mia immagine di sfondo con risoluzione massima a ca. 1200x2100, che dovrebbe quindi essere ridimensionato da 3: 4: 6: 8: 12.
  • Ricorda, devi solo fornire drawable specifici per la densità per i file bitmap (.png, .jpg o .gif) e per i file Nine-Patch (.9.png). Se usi file XML per definire risorse disegnabili (es. Forme), metti solo una copia nella directory drawable predefinita.
  • Se dovessi mai accettare proporzioni molto grandi o dispari, crea cartelle specifiche anche per queste, usando i flag per questo, ad es. sw, long, large, Etc.
  • E non c'è bisogno di disegnare due volte lo sfondo. Quindi imposta uno stile con<item name="android:windowBackground">@null</item>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.