2012-01-19 11 views
6

Ti crea il primo drawable MDPI e proprio scalare è accordinly al rapporto .075/1.00/1.50/2 di pixel in Photoshop o non si ricrea ogni singolo drawable?Qual è il modo migliore per creare drawable per i diversi dpi

è anche meglio per iniziare un'immagine di alta qualità con e iniziare il ridimensionamento verso il basso o avviare un'immagine MDPI con e proprio scala in su?

Ecco quello che faccio:

creare un'immagine MDPI in photoshop con 320x480 porportions e 160 come di risoluzione. Salva 4 immagini e modifica la risoluzione semplicemente immettendo 120,160, 240 o 320 come risoluzione.

+0

Per la generazione automatica di diverse dimensioni, consultare: http://stackoverflow.com/a/18516508/237858 – kape123

+0

utilizzare questo studio di risorse Android http://romannurik.github.io/AndroidAssetStudio/ di Roman Nurik per progettare drawbles per tutte le taglie .. happy – goonerDroid

+0

Ho creato una semplice app java che può automatizzare il ridimensionamento delle immagini per te. La cosa migliore è che non è necessario decomprimere i file zip e copiare manualmente i file generati nella cartella res. Basta selezionare la cartella res come output e tutte le immagini in tutte le risoluzioni verranno generate nelle sottocartelle corrette. Puoi scaricare l'app qui: https://github.com/kaladivo/android-icon-generator –

risposta

6

Dalle linee guida di progettazione Android:

Strategie

Quindi, da dove si inizia quando si progetta per schermi multipli? Un approccio è quello di lavorare nello standard di base (dimensioni medie, MDPI) e scalare verso l'alto o verso il basso per gli altri serbatoi. Un altro approccio è quello di inizio con il dispositivo con le dimensioni dello schermo più grande, e poi scala verso il basso e capire l'interfaccia utente compromette avrete bisogno di fare su piccoli schermi .

Per informazioni più dettagliate su questo argomento, controlla Supporting Multiple Screens.

+0

Grazie, comunque quale raccomanderesti? Ci sono pro e contro per entrambi i metodi? – user870380

+0

Per essere onesti, c'è un team di progettazione che si occupa di questo per me. Credo che inizino con l'immagine di alta qualità e riducendola. – Graham

+0

@Graham Per le immagini vettoriali, è l'altro modo. Si inizia da piccole e si generano risorse ridimensionate. Oppure la qualità si degrada. – HEXcube

5

Le punte per la sezione progettisti del Icon Design Guidelines ha i seguenti consigli:

forme Usa vettoriali ove possibile
Quando possibile, utilizzare forme vettoriali in modo che, in caso di necessità, le risorse possano essere ridimensionate senza perdita di dettagli e nitidezza dei bordi.

Inizia con grandi tavole da disegno
Perché è necessario creare le attività per diverse densità dello schermo, è meglio iniziare la vostra icona disegni su grandi tavole da disegno con le dimensioni che sono multipli delle dimensioni delle icone di destinazione. Ad esempio, le icone di avvio sono 96, 72, 48 o 36 pixel di larghezza, a seconda della densità dello schermo. Se inizialmente si disegnano icone di avvio su una tavola da disegno 864x864, sarà più facile e più pulito modificare le icone quando si ridimensiona la tavola da disegno fino alle dimensioni di destinazione per la creazione di asset finale.

Ci sono un certo numero di altri buoni consigli in quella sezione. Penso che sia un buon consiglio anche per altri tipi di disegni (icone di menu, sfondi, ecc.).

1

io in genere iniziano grande, e passare alla più piccola.

trovo che PowerPoint è in realtà uno strumento molto bello per la creazione di risorse per le mie applicazioni. Tutta la grafica è vettoriale, quindi scalano su e giù senza alcuna perdita di qualità.

Tendo ad iniziare con i più grandi se non altro per cui è più semplice lavorare con qualcosa che sembra più grande. quando passo a quelli di dimensioni più piccole, in genere lo zoom in alcuni per compensare.

Qualsiasi oggetto grafico in powerpoint ti consentirà di fare clic con il pulsante destro del mouse e scegliere "Salva come immagine" che verrà visualizzato come file png per te. L'unica cosa rimasta è di lasciarlo in draw9patch se necessario.

1

Uso Inkscape, anche con immagini vettoriali, quindi esporta nella dimensione raster richiesta per le varie risoluzioni. Un articolo che ho scritto sulla produzione di icone da Inkscape può essere trovato al http://androidcookbook.com/Recipe.seam?recipeId=2549

0

Il modo migliore: creare immagini ad alta risoluzione, quindi ridurle.

Se si utilizza Photoshop, sarà un gioco da ragazzi!

La mia versione biforcuta di Output Android Assets.jsx sceneggiatura automatizzare il processo downscale per tutti dpi :-)

In un click, sarà creare:

  • tutto il drawable - ??? ? cartelle
  • con tutte le versioni di immagini scalate di all il tuo psd o png file ad alta risoluzione.

Così, proprio creare xxxhdpi immagini poi ridimensionare con lo script.

Creazione di immagini iniziali ad alta risoluzione larghezza e l'altezza come multiplo di 16 è saggio dal momento che verranno ridimensionare correttamente come illustrare in questa tabella:

ldpi mdpi tvdpi  hdpi xhdpi xxhdpi xxxhdpi 
0,75 1  1,33  1,5  2  3  4 

3  4  5,33  6  8  12  16 
6  8  10,67 12  16  24  32 
9  12  16  18  24  36  48 
12  16  21,33 24  32  48  64 
15  20  26,67 30  40  60  80 
18  24  32  36  48  72  96 
21  28  37,33 42  56  84  112 
24  32  42,67 48  64  96  128 
27  36  48  54  72  108  144 
30  40  53,33 60  80  120  160 
etc.... 

Spero che questo aiuti

Nota:

tvdpi è un caso raro , quindi non mi interessa a volte ridimensionare a "senza numero intero" valori.

Crediti:

Ex versioni di questo script, a cui ho aggiunto xxxhdpi e supporto xxhdpi, sono disponibili here e here

0

suggerisco un po 'di scrittura di script in PowerShell per Inkscape.

Esempio:

Mettere Inkscape in "c: \ bin \ Inkscape" (dir senza spazi) e disegnare tutte le immagini in MDPI risoluzione (1x).

nella casella delle proprietà dell'oggetto Inkscape (ID id in xml), fornire un nome ID per ciascun oggetto che si desidera esportare in png.

Salva il tuo SVG in "C: \ users \ rone \ Pictures \ design-MyApps-forscript.svg"

Creare una directory "d:".

E mettere questo script in "\ Temp C: \ app \ scripts \"


PowerShell nome dello script è "inkscape_to_png.ps1" :

param (
    $inkscape_dir="C:\bin\Inkscape\", 
    $inkscape_bin="inkscape.exe", 
    $img_id="", 
    $fichier_svg="C:\Users\rone\Pictures\design-MyMap-forscript.svg", 
    $tmp_dir="d:\temp\" 
) 

$inkscape=$(Resolve-Path "$inkscape_dir\$inkscape_bin") 


function getWidthHeight($img_id) { 
    [email protected]{} 

    $old_pwd=$pwd.path 

    cd $inkscape_dir 

    write-host -foreground yellow "détermine la taille de $img_id" 

    $size.width=invoke-command {./inkscape --file=$fichier_svg --query-id=$img_id --query-width 2>$null} 
    $size.height=invoke-command {./inkscape --file=$fichier_svg --query-id=$img_id --query-height 2>$null} 

    write-host -foreground yellow "width : $($size.width)" 
    write-host -foreground yellow "height : $($size.height)" 

    cd $old_pwd 

    return $size 
} 

function convertTo($size, $format) { 
    [email protected]{} 

    if ($format -eq "MDPI") { 
     $rsize.width=[int]$size.width*1 
     $rsize.height=[int]$size.height*1 
    } elseif ($format -eq "LDPI") { 
     $rsize.width=[int]$size.width*0.75 
     $rsize.height=[int]$size.height*0.75 
    } elseif ($format -eq "HDPI") { 
     $rsize.width=[int]$size.width*1.5 
     $rsize.height=[int]$size.height*1.5 
    } elseif ($format -eq "XHDPI") { 
     $rsize.width=[int]$size.width*2 
     $rsize.height=[int]$size.height*2 
    } elseif ($format -eq "XXHDPI") { 
     $rsize.width=[int]$size.width*3 
     $rsize.height=[int]$size.height*3 
    } elseif ($format -eq "XXXHDPI") { 
     $rsize.width=[int]$size.width*4 
     $rsize.height=[int]$size.height*4 
    } 

    write-host -foreground yellow "après conversion : $format" 

    write-host -foreground yellow "width : $($rsize.width)" 
    write-host -foreground yellow "height : $($rsize.height)" 

    return $rsize 
} 

function inkscape_convert() { 

    $mdpi_size=getWidthHeight $img_id 

    write-host -foreground gray "----------------------------------------" 
    "MDPI,LDPI,HDPI,XHDPI,XXHDPI,XXXHDPI" -split ","|% { 


     $new_size=convertTo $mdpi_size $_ 
     if ($new_size.width -eq 0 -or $new_size.height -eq 0) { 
      write-host -foreground red "erreur lors de la recherche de la taille de l'image" 
      exit 
     } 
     $w=$new_size.width 
     $h=$new_size.height 
     $dir="$tmp_dir\drawable-$($_.toLower())" 
     if (-not $(test-path $dir)) { 
      write-host -foreground yellow "création du répertoire $dir" 
      mkdir $dir 
     } 
     $new_file_name="$dir\$($img_id).png" 
     $cmd="$inkscape -z -i $img_id -j -f $fichier_svg -w $w -h $h -e $new_file_name" 
     write-host -foreground gray $cmd 
     invoke-expression -command $cmd 
     if ($? -eq $true) { 
      write-host -foreground yellow "conversion OK" 
     } 

    } 
    write-host -foreground gray "----------------------------------------" 

} 


inkscape_convert 

ora, chiamare questo script come questo esempio:

012.351.

@("btn_button_name_1","btn_button_name_3","btn_other", "btn_zoom", "btn_dezoom", "btn_center", "btn_wouwou", "im_abcdef", "ic_half", "ic_star", "ic_full") | % { C:\app\scripts\inkscape_to_png.ps1 -img $_ -f design-MyMap-forscript.svg }

e lo script creerà tutte le vostre drawable in tutte le risoluzioni (ldpi, MDPI, hdpi, xhdpi, xxhdpi, xxxhdpi) in d: \ temp \ drawable-xyz ...

Quindi un confortevole che fa risparmiare tempo.

0

Sembra che ci sia uno strumento in Android Studio:

Espandi la cartella del progetto in Project View> fai clic con il pulsante destro del mouse su app> Nuovo> Image Asset

Icona Tipo: Barra azioni e scheda Icone

Tipo: Immagine

Scegliere il Path per l'immagine originale (che dovrebbe essere grande)

Forma: Nessuno (per rendere trasparente lo sfondo)

E genererà le immagini in le cartelle disegnabili appropriate.

Problemi correlati