2013-02-25 19 views
18

Sono nuovo di zecca a Android e sto utilizzando Eclipse ADT per creare una semplice applicazione. Questa applicazione ha un pulsante che modifica la sua immagine di sfondo in base ai clic dell'utente.Android - Aggiunta di immagini al progetto

Ho notato che ci sono 4 cartelle per le immagini nel mio progetto: drawable-hdpi, drawable-ldpi, drawable-mdpi, and drawable-xhdpi.

e ho anche notato che le immagini che ci sono al momento (l'icona di avvio) sono tutte di dimensioni diverse.

Ciò significa che devo utilizzare un software di modifica delle immagini per creare un'immagine per ciascuna risoluzione per ciascuna delle mie immagini? O (si spera) c'è un modo per importare un'immagine e farlo fare automaticamente per me?

Grazie!

risposta

45

Le immagini e altri file visivi sono memorizzati in una o più directory disegnabili. Se solo in una directory, Android ridimensiona l'immagine secondo necessità. Se viene utilizzata più di una directory, Android selezionerà l'immagine di dimensioni appropriate.

  • drawable-ldpi - immagini a bassa densità
  • drawable-MDPI - le immagini medie densità
  • drawable-hdpi - Immagini ad alta densità
  • drawable-xhdpi - immagini ad alta densità extra (display cioè retina-like)
  • drawable-xxhdpi - immagini ad alta densità extra extra (dispositivi come Nexus 10, Samsung Galaxy S4, HTC One e Sony Xperia Z)
  • drawable-xxxhdpi - immagini ad alta densità in più triple (Nexus 6 and 9)

(Nota a margine: i file XML possono anche essere scritti e memorizzati come disegni. Questi tipi di file possono controllare quando più immagini devono essere utilizzate in base allo stato di una vista o ad altre impostazioni visive come gradienti, bordi, ecc.

Quindi, che cosa deve fare ?

Per ottenere i migliori risultati (dal Android developer docs):

per generare queste immagini, si dovrebbe iniziare con la vostra risorsa grezza in formato vettoriale e generare le immagini per ogni densità utilizzando la seguente scala dimensioni:

  • xxxhdpi: 4.0
  • xxhdpi: 3.0
  • xhdpi: 2.0
  • hd pi: 1.5
  • tvdpi: 1.33 (solo TV)
  • MDPI: 1.0 (baseline)
  • ldpi: 0,75

Questo significa che se si genera un'immagine di 200x200 per i dispositivi xhdpi, si dovrebbe generare la stessa risorsa in 150x150 per hdpi, 133x133 per tvdpi, 100x100 per mdpi e infine un'immagine 75x75 per dispositivi LDPI.

Se si desidera utilizzare una sola immagine e lasciare scala Android per voi:

Oltre il 75% dei dispositivi Android ora hanno risoluzioni hdpi o superiore, a seconda del Dashboard on the Android Developer site. Quindi, se crei un'immagine su hdpi, ad esempio, sarà perfetta per circa un terzo dei dispositivi, aumenterà la scalabilità per alcuni e ridurla per circa il 25% dei dispositivi. In generale, penso che sarebbe meglio ridimensionare piuttosto che aumentare di livello.

+1

grazie mille. bella risposta :) –

+1

Grazie! Ho recentemente studiato questo problema. –

+0

Ho 20 immagini. Ciascuno di essi è 100x100px. Immagino che significhi che devo creare 60 immagini in più, una per le altre 3 densità. Potete consigliare un programma per semplificare questo compito? Io uso paint.net ma non esegue l'elaborazione in batch. –

3

Ciò significa che devo utilizzare un software di modifica delle immagini per creare un'immagine per ciascuna risoluzione per ciascuna delle mie immagini? O (si spera) c'è un modo per importare un'immagine e farlo fare automaticamente per me?

Se si dispone già di sorgenti ad alta risoluzione (o vettore formati grafici) delle immagini, è possibile utilizzare il Android Asset Studio per generare icone/immagini dal tuo immagini sorgente per ogni densità (meno xxhdpi). Puoi anche creare icone/immagini da clipart Android predefinite, che possono essere tematizzate per varie versioni di Android. Ciò ti eviterà alcuni fastidi di ridimensionamento e salvataggio con uno strumento di modifica delle immagini.

+0

nice controllerò lo strumento di asset di Android adesso! –

+0

Lo strumento aggiungerà ".9" nelle immagini create (ad esempio image.9.png). Quando chiami il drawable, usa semplicemente "image" (salta sia ".9" che l'estensione). Ho perso un po 'di tempo cercando di capirlo. – TekiusFanatikus

Problemi correlati