2012-03-21 1 views
1

Я пытаюсь получить текст на кругах. То, что у меня есть на минуту, - это два вектора, один для удерживания строк, а другой для хранения Drawables.Рисование векторов на холсте и ассоциирование элементов в этих векторах?

В моем методе onDraw() я прокручиваю и рисую на каждый холст. Я хочу найти способ связать элементы вектора String и элементы в векторе Drawable.

Например: пользователь нажимает на круг 3, затем они затем добавляют, чтобы добавить текст в круг, и после завершения этих шагов круг 3 знает, что соответствующий текст находится в элементе 3 вектора строк. Таким образом, в OnDraw(), то Drawable вектор может быть обращен на холст, за которым следует Струны холдинговых текст для каждого круга ....

Некоторой коды у меня на минуте:

пользователь нажимает, чтобы добавить текст к кругу открывается диалоговое окно и просит пользователя ввести текст, который они хотели бы по кругу.

stringsVector.setSize(vecForShapes.size());//set the Strings vector to the size of the Drawable vector, because there will never be more text than circles 

stringsVector.add(circleID, circleText);//add circleText to the Strings vector at position circleID. 

сейчас в моей OnDraw() Я перерисовывать оба вектора и поместить текст на пределы этого круга:

for(int i =0;i<_vecForShapes.size();i++) 
     { 
     Rect bounds = ((Drawable) _vecForShapes.get(i)).getBounds();//get circle i 

     String tempString = stringVect.get(i);//get string i 

     if(tempString !=null) 
     if(tempString.length() > 17) 
     { 
      canvas.drawText(tempString, 0, 11, bounds.left+10, bounds.top+30, colour); 
      canvas.drawText(tempString, 11,tempString.length(), bounds.left+5, bounds.top+40, colour); 
     }//end if 
     else 
     { 
      canvas.drawText(tempString,0,tempString.length(), bounds.left+5, bounds.top+40, colour); 
     } 
     } 

Я знаю, что есть, вероятно, многие лучшие способы сделать это, но я слишком далеко, чтобы изменить это сейчас, но я все еще готов выслушать мнения людей, поэтому я буду знать лучше в следующий раз.

Спасибо!

ответ

0

Используйте

Canvas.drawPath(Path path, Paint paint) 

и

Canvas.drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) 

Методы добиться того, что вы ищете.

Смежные вопросы