2011-04-18 11 views
9

¿Cuál es la manera correcta de usar un recurso de imagen de 9 parches en una vista personalizada?Cómo dibujar una imagen de 9 parches en un lienzo con drawBitmap

que estoy haciendo esto:

background = BitmapFactory.decodeResource(getResources(), R.drawable.fundo_bookshelf); 
canvas.drawBitmap(background, null, new Rect(0, y, width, y+backgroundHeight), null); 

fundo_bookshelf es una imagen apropiada 9-parche, guardado como fundo_bookshelf.9.png, se ve a continuación:

fundo_bookshelf

Pero cuando se utiliza el drawBitmap, la imagen completa se estira, en lugar de solo la parte con el píxel negro en la parte superior, como se muestra en esta captura de pantalla: strechted image

Respuesta

23

¿Algo como esto?

NinePatchDrawable bg = (NinePatchDrawable) resources.getDrawable(id); 
if (bg != null) { 
    bg.setBounds(0, 0, getWidth(), getHeight()); 
    bg.draw(canvas); 
    } 

(lo siento, no adaptarlo a su código, que es un corte recto/pasta de la mía, pero esperemos que suficiente para seguir adelante)

+0

Se funcionó de maravilla! Muchas gracias –

+2

En caso de que alguien cometa el mismo error que yo, la parte 'setBounds' ES muy importante. – Arnaud

Cuestiones relacionadas