It works by looping through each word and checking if that words width fits within the defined boundary if not it counts the current number of characters for that line and starts the next.
- Code: Select all
mText = new String("Balls are not to be played with");
mTextSize = 25;
mPaintWhiteText = new Paint();
mPaintWhiteText.setColor(Color.WHITE);
mPaintWhiteText.setAntiAlias(true);
mPaintWhiteText.setTextSize(mTextSize);
mPaintWhiteText.setTextAlign(Paint.Align.LEFT);
mTextWidths = new float[mText.length()];
mPaintWhiteText.getTextWidths(mText, mTextWidths);
float lineWidthCount = 0;
mLineCount = 1;
mLineCharacterCount[0] = 0;
float wordWidth = 0;
int i, j;
for(i=0 ; i < mText.length(); i++){
j = i;
while((!mText.regionMatches(j, " ", 0, 1))&&(j < mText.length())){
lineWidthCount += mTextWidths[j];
j++;
}
if(lineWidthCount >= RightTextBoundary){
mLineCharacterCount[mLineCount] = i;
mLineCount++;
lineWidthCount = 0;
}
else
{
mLineCharacterCount[mLineCount] = j;
i = j;
}
}
mLineCount++;
mLineCharacterCount[mLineCount] = mText.length();
- Code: Select all
public void draw(Canvas c){
for(int i = 0; i < mLineCount ; i++){
c.drawText(mText, mLineCharacterCount[i], mLineCharacterCount[i+1], mWidth, mTextSize+(mTextSize*i), mPaintWhiteText);
}
}

