/** * 分隔获取的要显示的字符串,保存在string数组 * * @param aStr * String 输入的字符串 * @param aFont * Font 字体 * @param aRowMaxW * 一行的最大宽度 * @return String[] */ public static String[] clipString(String aStr, Paint aPaint, int aRowMaxW ) { if (aStr == null) { return null; } int lineNum = 0; if (aRowMaxW < aPaint.measureText("学")) { aRowMaxW = (int) aPaint.measureText("学"); // System.out.println("charWidth: " + aFont.charWidth('学')); } int sStrID = 0;// 字符串中每个字的标记 StringBuffer sStringBuffer = null; int sRowWidth = 0;// 一行中当前字的宽度 Vector sStrManager = new Vector (); char sChar = ' '; int spacePos = 0; while (sStrID < aStr.length()) { sChar = aStr.charAt(sStrID); // Log.i("------"+line,lineNum+"++++"); switch (sChar) { case '/r': case '/n':// 遇到换行的时候 if (sStrID > 0) { sStrManager.addElement(aStr.substring(0, sStrID)); lineNum++; if (lineNum == line) { if (aScreenWidth > 0) { aRowMaxW = aScreenWidth - 10; } } // Log.i("n+++++",lineNum+"++++"); } aStr = aStr.substring(sStrID + 1);// 取回/n后面的字符 sRowWidth = 0;// 把下一行的字的现有宽度设为0 sStrID = 0;// 把剩下的字首个字的下标重新定义为0 break; case ' ': spacePos = sStrID; // 当出现英文单词截断时,刚好保存截断前面一个空格的位置 sRowWidth += aPaint.measureText(String.valueOf(sChar)); sStrID++; break; case '/t': sStringBuffer = new StringBuffer(aStr); sStringBuffer.deleteCharAt(sStrID); sStringBuffer.insert(sStrID, " "); aStr = sStringBuffer.toString(); sRowWidth += aPaint.measureText(" "); sStrID++; break; default: if (sRowWidth + aPaint.measureText(String.valueOf(sChar)) > aRowMaxW - 15) { // 如果文字的宽度超过手机屏幕的宽度,要进行换行。 // 如果截断位置是两个 ASCII 字符,且后一个不是空格。表明是在英文单词当中进行的截断 // 则需要查找最后一个空格的出现位置 if ((aStr.charAt(sStrID - 1) > 0) && (aStr.charAt(sStrID - 1) < 128) && (aStr.charAt(sStrID) > 0) && (aStr.charAt(sStrID) < 128) && (aStr.charAt(sStrID) != ' ')) { sStrID = spacePos; } sStrManager.addElement(aStr.substring(0, sStrID)); lineNum++; aStr = aStr.substring(sStrID); sStrID = 0; sRowWidth = 0; } else { sRowWidth += aPaint.measureText(String.valueOf(sChar)); sStrID++; } break; } } sStrManager.addElement(aStr); // sStrManager.addElement(" "); //加多一个空白行 String reStr[] = new String[sStrManager.size()]; sStrManager.copyInto(reStr);// 把strManager里的字符复制到新定义的reStr[]数组中 return reStr; }

更多相关文章

  1. Android(安卓)在OnCreate()中获取控件高度与宽度
  2. android string.xml 添加特殊字符
  3. 在Android中让Preference的宽度占满整个屏幕的宽度
  4. android 获取字符串的高度和宽度
  5. Android简易Flash播放器[转]
  6. Android重写View并且自定义属性(二)
  7. Android中测量文字的宽度和高度
  8. iOS url 编码 解码
  9. Android(安卓)获取按钮Button的高度、宽度、坐标

随机推荐

  1. android耳机插拔的监听
  2. Android 圆形按钮实现
  3. 我的Android开发入门笔记(三):Starting Anot
  4. Android URL
  5. Android ---- Zygote 深入
  6. Android之ViewGroup实现可拖动的GridView
  7. Android中横竖屏切换时Activity的生命周
  8. android中进行https连接的方式(源码)
  9. Android(安卓)Intent 总结
  10. android 自动弹出软件盘