2010-01-24 4 views
22

J'essaie de dessiner un neuf patch sur un objet Canvas sur Android. Ce qui semble étrange est que bien que j'ai généré mon neuf patch en utilisant l'outil draw9patch, le constructeur de NinePatch nécessite un tableau d'octets supplémentaire appelé "chunk" pour construire le patch neuf.Dessin de neuf Patch sur Canvas (Android)

Pourquoi cela n'est-il pas plus simple? Quel est le "morceau"? Et si vous l'avez fait vous-même, comment vous y êtes-vous pris?

Toute aide appréciée.

Répondre

73

Vous pouvez facilement le faire de cette façon:

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

Mais je dois l'image pour l'adapter une taille spécifique. Sinon, je n'utiliserais pas un neuf-patch. –

+7

Dans le code que j'ai mis ci-dessus, l'objet 'd' est en réalité une instance de NinePatchDrawable puisque vous avez donné à getDrawable l'ID d'une ressource 9patch. Donc vous pouvez faire NinePatchDrawable npd = (NinePatchDrawable) d; Cela ne fonctionnera-t-il pas pour vos objectifs? –

+0

Juste essayé: fonctionne parfaitement. Merci beaucoup –