2012-06-12 9 views
10

Mi compañero de trabajo y yo desarrollamos dos aplicaciones en paralelo, cada una con un estilo similar. El fondo de vista principal de estas aplicaciones es un degradado radial. Implementó su imagen de nueve parches y lo hice con una forma dibujable. Ambos generan resultados similares y aceptables.Nine-Patch Drawable vs Shake Drawable. ¿Cuál debería ser el preferido?

Así que mi pregunta es, ¿qué deberíamos usar? ¿Existen compensaciones entre el consumo de memoria y el rendimiento? Imagino que la imagen puede tardar en cargarse, pero que la forma dibujable requiere más tiempo para dibujar (debido a los cálculos). ¿Se almacenan entonces en un caché y esas penalizaciones solo suceden la primera vez que se muestran o estos problemas continúan?

Forma Disponibles:

<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> 

nueve remiendos:

enter image description here

Respuesta

3

Forma estirable es grande para el tipo de gradiente de imágenes con simples cambios de color constantes. Por otro lado, las imágenes de 9 parches son ideales para imágenes con muchos detalles, colores constantes en regiones de estiramiento.

+0

Eso es un buen criterio para la calidad del resultado. Sin embargo, ¿qué pasa con el rendimiento y el consumo de memoria en nuestro caso? Por ejemplo, la imagen es aproximadamente 30K. Si usamos eso como fondo para varias Activies, ¿consumirá más memoria que la forma dibujable? – jsmith

+0

@jsmith Rendimiento: 10-20 ms no debería ser un problema, así que diría que no hay diferencia. Consumo de memoria: como ambos se reconstruyen en tiempo de ejecución, su memoria consumida debería ser la misma también. (Teniendo en cuenta que ambos serán datos de mapa de bits con el tamaño dado al final) –

1

Estaba tropezando con este problema antes.

NO UTILICE SHAPE EN XML SI TIENE UNA ANIMACIÓN QUE LO INVOLUCRA. La razón es que el almacenamiento en caché (especialmente si usa aceleración de hardware) hará que realmente parezca "lento" ya que la pantalla no se actualizará tan a menudo.

+2

¿Puedes explicar un poco más qué significa "... lo involucra"? ¿Quieres decir, cuando la forma XML se mueve sola? ¿O algo mas? –

0

Eche un vistazo a la respuesta de @Ivan Bartsov. Pero a través de un cuidadoso análisis de código, concluye que para la mayoría de los casos generales, usar un parche 9 requiere menos procesos y utiliza menos memoria que los gradientes generados. Por lo tanto, en la mayoría de los casos, es mejor usar 9 parches.

Tome un vistazo a su respuesta para obtener detalles del modo: What should i use for better performance, nine-patch or drawable xml resource?

Cuestiones relacionadas