Search code examples
javaandroidgraphicsnine-patch

Drawing Nine Patch onto Canvas (Android)


I'm trying to draw a nine patch onto a Canvas object on the Android. What seems strange is that although I generated my nine patch using the draw9patch tool, the constructor for NinePatch requires an additional byte array called the "chunk" to construct the nine patch.

Why isn't this simpler? What is the "chunk"? And if you have done this yourself, how did you go about it?

Any help appreciated.


Solution

  • You can easily do it this way:

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