2011-11-22 10 views
21

Ho un grafico pulsante con dimensioni 300 * 90.How deve essere le dimensioni per hdpi/MDPI/ldpi? Graziedimensioni grafici per hdpi/ldpi/MDPI

+0

http://developer.android.com/guide/practices/screens_support.html (vedi Tabella 1). DPI è un fattore di conversione. Senza sapere quanto grande vuoi che appaia il tuo pulsante, questa domanda non può essere risolta. –

risposta

60

Google suggests utilizzando

3 : 4 : 6 : 8 : 12 : 16 rapporti di scala per

ldpi : mdpi : hdpi : xhdpi : xxhdpi : xxxhdpi conseguenza.Esempio:

  • 36x36 a bassa densità
  • 48x48 per media densità
  • 72x72 ad alta densità
  • 96x96 per extra-alta densità
  • 144x144 per extra-extra-alta densità
  • 192x192 per extra-extra-extra-alta densità (launcher icon only)

Nel tuo esempio, se le dimensioni dei pulsanti indicati sono per hdpi, dimensioni corrette dovrebbero essere:

  • 150x45 ldpi
  • 200x60 mdpi
  • 300x90 hdpi
  • 400x120 xhdpi
  • 600x180 xxhdpi
+8

Solo un'aggiunta, ldpi: mdpi: hdpi: xhdpi: 'xxhdpi' = 3: 4: 6: 8:' 12' –

+0

Grazie, lo aggiungerò non appena Google lo documenterà. –

+0

Ho calcolato questo rapporto dalle icone ic_launcher che Android sdk genera in ciascuna cartella di densità. Non è ancora documentato da nessuna parte, ma è quasi autenticato :-) –

5

Dipende da quello schermo del dispositivo dimensioni avete progettato che grafica contro. Se si desidera visualizzare come 300x90 su un (HVGA) tela 320x480, quindi i vostri dimensioni in pixel sono corrette per i dispositivi MDPI, e si avrebbe bisogno le seguenti immagini:

  • LDPI: 225x68px
  • MDPI: 300x90px
  • HDPI: 450x135px

LDPI è il 75% della scala MDPI, e HDPI è 150% della scala MDPI. Se avete progettato quelle dimensioni grafiche su un (WVGA) tela 480x800, per esempio, allora le vostre dimensioni sono già corrette per HDPI, ed è necessario scalare gli altri due verso il basso da lì:

  • LDPI: 150x45px
  • MDPI: 200x60px
  • HDPI: 300x90px

Speranza che aiuta!

1

Formula completa per creare tutte le immagini della cartella risorse

In primo luogo si deve decidere per quale DPI si sta creando immagini per, una volta che avete deciso e ha creato le immagini quindi utilizzare il seguente secondo codice con Google Guide Lines

public class DPICalculator { 

    private final float LDPI = 120; 
    private final float MDPI = 160; 
    private final float HDPI = 240; 
    private final float XHDPI = 320; 

    private final float BASE_DPI = MDPI; 

    public static void main(String[] args) { 
     DPICalculator cal = new DPICalculator(); 

     cal.calculateDPI_baseUnitPixel(300, 90, cal.HDPI); 
    } 

    private float densityWidth; 
    private float densityHeight; 

    public void calculateDPI_baseUnitPixel(float width, float height, float currentDensity) { 

     densityWidth = getDensityPX(width, currentDensity); 
     densityHeight = getDensityPX(height, currentDensity); 

     this.calculateAllDP(); 
    } 

    private float getDensityPX(float value, float currentDensity) { 
     return (value/(currentDensity/BASE_DPI)); 
    } 

    public void calculateDPI_baseUnitDPI(float width, float height, float currentDensity) { 

     densityWidth = getDensityDPI(width, currentDensity); 
     densityHeight = getDensityDPI(height, currentDensity); 

     this.calculateAllDP(); 
    } 

    private float getDensityDPI(float value, float currentDensity) { 
     return (value * (currentDensity/BASE_DPI)); 
    } 

    private void calculateAllDP() { 
     // get all settings. 
     float low_pw = densityWidth * (LDPI/BASE_DPI); 
     float low_ph = densityHeight * (LDPI/BASE_DPI); 

     float med_pw = densityWidth * (MDPI/BASE_DPI); 
     float med_ph = densityHeight * (MDPI/BASE_DPI); 

     float high_pw = densityWidth * (HDPI/BASE_DPI); 
     float high_ph = densityHeight * (HDPI/BASE_DPI); 

     float xhigh_pw = densityWidth * (XHDPI/BASE_DPI); 
     float xhigh_ph = densityHeight * (XHDPI/BASE_DPI); 

     System.out.println("LDPI " + low_pw + " x " + low_ph); 
     System.out.println("MDPI " + med_pw + " x " + med_ph); 
     System.out.println("HDPI " + high_pw + " x " + high_ph); 
     System.out.println("XHDPI " + xhigh_pw + " x " + xhigh_ph); 

    } 
} 

Risultato

LDPI 150.0 x 45.0 
MDPI 200.0 x 60.0 
HDPI 300.0 x 90.0 
XHDPI 400.0 x 120.0 
0

Per questo, è possibile provare il mio strumento che è stato realizzato per ridimensionare imag es (singolo o batch) di diversi tipi (png, jpg, gif, svg, psd, 9-patch ..). Utilizza algoritmi di ridimensionamento della qualità hiqh e supporta alcuni strumenti di compressione senza perdita come pngcrush. C'è una GUI e una riga di comando ui.

https://github.com/patrickfav/density-converter

screenshot

Problemi correlati