2010-01-24 15 views
22

Sto provando a disegnare nove patch su un oggetto Canvas su Android. Ciò che sembra strano è che sebbene io abbia generato la mia patch nove usando lo strumento draw9patch, il costruttore di NinePatch richiede un ulteriore array di byte chiamato "chunk" per costruire la patch nove.Disegno di Nove patch su tela (Android)

Perché non è più semplice? Qual è il "pezzo"? E se lo hai fatto tu stesso, come hai fatto?

Qualsiasi aiuto apprezzato.

risposta

73

si può facilmente fare in questo modo:

// Load the image as a NinePatch drawable 
NinePatchDrawable npd = (NinePatchDrawable)Resources.getDrawable(R.drawable.my_nine_patch); 

// Set its bound where you need 
Rect npdBounds = new Rect(...); 
npd.setBounds(npbBounds); 

// Finally draw on the canvas 
npd.draw(canvas); 
+0

ma ho bisogno l'immagine per adattarsi a un formato specifico. Altrimenti non userei una nove patch. –

+7

Nel codice che ho inserito sopra, l'oggetto 'd' è in realtà un'istanza di NinePatchDrawable dato che hai dato a getDrawable l'ID di una risorsa da 9patch. Quindi potresti fare NinePatchDrawable npd = (NinePatchDrawable) d; Non funzionerà per i tuoi scopi? –

+0

Ho appena provato: funziona perfettamente. Grazie mille –