2010-01-24 2 views
22

9 개의 패치를 Android의 Canvas 오브젝트에 그립니다. 이상하게 보이는 점은 draw9patch 도구를 사용하여 9 개의 패치를 생성했지만 NinePatch의 생성자는 9 개의 패치를 구성하기 위해 "청크"라는 추가 바이트 배열이 필요하다는 것입니다.9 개의 패치를 캔버스에 그리기 (안드로이드)

왜 이렇게 간단하지 않습니까? "덩어리"란 무엇입니까? 그리고 네가이 일을 직접 해낸다면, 어떻게 그 일을 시작 했니?

도움을 주시면 감사하겠습니다.

답변

73

당신은 쉽게 이런 식으로 수행 할 수 있습니다

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

을하지만 특정 크기에 맞게 이미지가 필요합니다. 그렇지 않으면 나는 9 패치를 사용하지 않을 것입니다. –

+7

위의 코드에서 객체 'd'는 실제로 9Patch 리소스의 ID 인 getDrawable을 주었기 때문에 NinePatchDrawable의 인스턴스입니다. 그래서 당신은 할 수 NinePatchDrawable npd = (NinePatchDrawable) d; 그것은 당신의 목적을 위해 작동하지 않을까요? –

+0

방금 ​​해보기 : 완벽하게 작동합니다. 고맙습니다. –