안드로이드 개발 질문/답변
(글 수 45,052)
위와 비슷한 형태의 트리 구조를 안드로이드에서 구현 해야 합니다.
기능은 트리가 상하나 좌우로 늘어날 경우 손으로 드래그 할 수 있어야 하고
특정 노드를 터치하는 이벤트를 잡아야 합니다.
데이터는 XML로 오고 그때 그때마다 다른 데이터 입니다.
간단하게 View릉 상속 받아서 onDrow에서 텍스트로 데이터를 뿌렸고
onTouchEvent를 이용해서 스크롤까지 구현 했습니다.
이제는 텍스트를 클릭했을때 이벤트를 잡으려고 하는데...
원이나 사각형을 그릴 경우에는 영역값이 명확하지만
텍스트의 경우는 어디서 부터 어디까지가 텍스트 영역인지 알 방법을 모르겠습니다.
canvas.drawText에서는 시작 좌표만 받으니...
그래서 텍스트 영역 범위를 알 수 있는 방법이 있으면 궁금하고...
혹시 제 요구 사항을 만족할만한 라이브러리나 자료가 있으면 더 없이 행복 할 것 같네요.
지금은 해결책으로 게임 엔진을 보고 있는데... 이건 좀 오버 같기도 하고요.
어떤 의견이든 아이디어 주시면 정말 정말 고맙게 받겠습니다.
행복하세요.
2011.01.24 15:31:44
음.. 몇일전에 말풍선 그렸는데...
안에 들어가는 텍스트의 사이즈 구한 부분은.. 이렇게 생겼습니다.
String str = "참 쉽죠??";
paint.reset();
paint.setAntiAlias(true);
paint.setTextSize(25);
paint.setColor(Color.RED);
float strWidth = paint.measureText(str);
float strHeight = paint.ascent() + paint.descent();
canvas.drawText(str, center_x - (strWidth / 2), center_y - (strHeight / 2), paint);
어디서 배웠는지 한참 찾았군요... 이거 녹두장군님 블로그에서 배워왔던거였군요.




제가 몇일전에 canvas 내에서 text 를 만들고 그걸 bitmap 에 overlay 했는데..
canvas 내에서 text 크기 알아 내는게 딱히 없어서 ..아래와 같이 해서 사용했습니다.
canvas 내에서 text 크기를 알아 내는 방법입니다.
int getTextWidth(String text) {
int count = text.length();
float[] widths = new float[count];
textPaint.getTextWidths(text, widths);
int textWidth = 0;
for (int i = 0; i < count; i++)
textWidth += widths[i];
return textWidth;
}