2012-03-30 15 views
22

Ho le stesse immagini con 9 patch in MDPI/HDPI/xhdpi. C'è un motivo particolare per cui non verrà salvato per le dimensioni più ridotte? Le aree estensibili si ridimensionano automaticamente quando il contenuto è maggiore, ad esempio uno sfondo come una 9-patch.Diverse immagini a 9 patch per densità diverse?

Esempio di fondo:

MDPI: mdpi

hdpi: hdpi

xhdpi: xhdpi

risposta

28

Molti nove patch sono così piccoli che normalmente non hanno bisogno di essere ricreato per le diverse dimensioni dello schermo.

Nell'esempio gli angoli dello sfondo non vengono ridimensionati. Se usi gli stessi angoli su tutte le risoluzioni, avranno una dimensione diversa su risoluzioni diverse. Sui telefoni più piccoli gli angoli appaiono più grandi sui telefoni più grandi, gli angoli appaiono più piccoli.

Un altro esempio potrebbe essere una linea. Se hai una linea che ha un effetto speciale e la crei come una patch per nove schermi mdpi e la linea è alta due pixel. Il solo riutilizzo di questo drawable senza ridimensionamento su uno schermo xhdpi renderebbe la linea alta due pixel su questo schermo. Ma poiché lo schermo ha pixel più piccoli (risoluzione più alta, stessa dimensione del display) la linea apparirebbe thiner.

Pertanto è sempre necessario creare un 9-Patch per ogni risoluzione, o come @Shubhayu ha detto che produce solo nove patch ad alta risoluzione e accetta che si offuschino se il sistema le ridimensiona per altre risoluzioni.

+0

Comprendi ora. Saluti a Bielefeld :-) – user949884

+0

È possibile accettare una risposta se ha risolto la tua domanda :) – Janusz

+0

Sì, hai ragione circa l'esempio di 2 pixel di altezza. Sebbene non avessi osservato un problema con il ridimensionamento delle immagini. È possibile che non abbia affrontato immagini che mostrerebbero la differenza. Grazie per il suggerimento :) Lo terrò a mente la prossima volta. – Shubhayu

6

Non è necessario mettere le immagini 9-patch di dimensioni diverse in tutta la 3 cartelle. Basta mettere quello con la più alta risoluzione nella cartella drawable. Android lo raccoglierà per tutte le diverse densità.

Anche la nitidezza dell'immagine dipende dalla risoluzione dell'immagine. Se si salva la dimensione più piccola (ovvero con la minima risoluzione), si verificherà un allungamento sfocato per i dispositivi ad alta densità. Ciò non sarà evidente se l'immagine di sfondo è di colore semplice. Noterai la differenza quando lo sfondo ha alcuni disegni/ripetibili di gradienti.

Modifica: Da quando ho scritto questo post, ho scoperto molte più cose sulla 9-patch. Le immagini a 9 patch non diminuiscono. La cosa migliore sarebbe mettere l'immagine più piccola. E in base a come cerca altre densità, dovresti creare immagini a 9 patch per le densità interessate. Qui ci sono ulteriori dettagli su di esso,

http://www.shubhayu.com/android/9-patch-image-designers-vs-developers

+0

E ridimensionerà le immagini dalla densità più alta per abbinare la densità scelta e dall'immagine ridimensionata su di esso utilizzerà il meccanismo di nove patch per allungare le immagini. Il risultato sarà in immagini sfocate e non è raccomandato. – Janusz

+0

Ridimensiona 9 patch in giù? Penso solo ad aumentare. – user949884

+0

Se Android preleva un drawable da una cartella xhdpi per un telefono mdpi, ridimensiona l'immagine indipendentemente dal fatto che siano 9-Patch o meno. Vedi la mia risposta per ulteriori informazioni. Ho anche avuto difficoltà a imparare questo;) – Janusz

Problemi correlati