2012-06-12 9 views
10

Il mio collega e io abbiamo sviluppato due app in parallelo, ognuna con uno stile simile. Lo sfondo di visualizzazione principale di queste app è un gradiente radiale. Ha implementato la sua come immagine a nove patch e l'ho fatto con una forma disegnabile. Entrambi generano risultati simili e accettabili.Drawable a forma di Nove-Patch contro forma. Quale dovrebbe essere preferito?

Quindi la mia domanda è, che dovremmo usare? Ci sono dei compromessi tra consumo di memoria e prestazioni? Immagino che l'immagine possa richiedere tempo per essere caricata, ma che la forma selezionabile richieda più tempo per disegnare (a causa dei calcoli). Sono questi poi memorizzati in una cache e quelle sanzioni si verificano solo la prima volta che vengono visualizzati o questi problemi sono in corso ???

Forma Drawable:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <gradient 
     android:startColor="#003472" 
     android:endColor="#000034" 
     android:gradientRadius="350" 
     android:type="radial"/> 
</shape> 

nove pezzi:

enter image description here

risposta

3

Forma drawable è grande per tipo gradiente di immagini con semplici cambiamenti di colore costanti. D'altro canto, le immagini con 9 patch sono perfette per le immagini con molti dettagli, il colore costante nelle regioni streching.

+0

che fa bene i criteri per la qualità del risultato. Tuttavia, per quanto riguarda le prestazioni e il consumo di memoria nel nostro caso. Ad esempio, l'immagine è circa 30K. Se lo usiamo come sfondo per diverse Activies, consumerà più memoria di quella disegnabile? – jsmith

+0

@jsmith Prestazioni: 10-20 ms non dovrebbe essere un problema, quindi direi nessuna differenza. Consumo di memoria: poiché entrambi vengono ricostruiti in fase di runtime, anche la loro memoria consumata dovrebbe essere la stessa. (Considerando entrambi saranno dati bitmap con dimensioni date alla fine) –

1

Si è appena imbattuto in questo problema in precedenza.

NON UTILIZZARE LA FORMA IN XML SE AVETE ANIMAZIONE CHE LA COINVOLGE. Il motivo è che la memorizzazione nella cache (specialmente se si sta utilizzando l'accelerazione hardware attivata) lo renderà davvero "laggoso" in quanto lo schermo non si aggiornerà più spesso.

+2

Puoi spiegare un po 'di più che cosa significa "... coinvolge"? Vuoi dire, quando la forma XML si muove da sola? O qualcos'altro? –

0

Dai un'occhiata alla risposta data da @Ivan Bartsov. Ma attraverso un'attenta analisi del codice, conclude che per la maggior parte dei casi generali, l'utilizzo di una patch 9 richiede meno processi e utilizza meno memoria dei gradienti generati. Pertanto, per la maggior parte dei casi è meglio usare 9 patch.

Date un'occhiata a sua risposta per i dettagli della modalità: What should i use for better performance, nine-patch or drawable xml resource?

Problemi correlati