Canvas中屏幕適配是比較頭疼的事情,我們必須使用程序來動態的根據屏幕大小來判斷以及處理適配問題,下面介紹了長字符串顯示時候自動換行的實現。
首先是把字符串每一行進行分割,存放到Vector中。
/**
* 按字節數把字符串分組,支持中文
*/
public static Vector splitStr(Font f, String str, int length) {
if (str == null)
return null;
Vector result = new Vector();
char[] tempChar = str.toCharArray();
int lengthPX = 0;
StringBuffer sb = new StringBuffer();
for (int i = 0; i < tempChar.length; i++) {
lengthPX += f.charWidth(tempChar[i]);
if (lengthPX > length || tempChar[i] == '\n') {
result.addElement(sb.toString());
sb = new StringBuffer();
lengthPX = f.charWidth(tempChar[i]);
if (tempChar[i] != '\n') {
sb.append(tempChar[i]);
}
} else {
sb.append(tempChar[i]);
}
}
if (sb.length() > 0)
result.addElement(sb.toString());
return result;
}
然後可以遍歷這個Vector,調用g.drawString來顯示字符串。需要在y坐標上累計字體的高度。