android 阅读器分页读取篇幅

android 阅读器分页读取字数

// 本方法 分行又分页
public static ArrayList<ArrayList<String>> getPageContentStringInfo(
    Paint m_paint, String content, int pageLines, float pageWidth) {

   char ch;
   int w = 0;
   int istart = 0;
   int lineNum = 0;
   ArrayList<ArrayList<String>> contentList = new ArrayList<ArrayList<String>>();
   ArrayList<String> cl = null;
   // 内容长度
   for (int i = 0; i < content.length(); i++) {
    if (cl == null)
     cl = new ArrayList<String>();
    ch = content.charAt(i);
    float[] widths = new float[1];
    String srt = String.valueOf(ch);
    m_paint.getTextWidths(srt, widths);
    if (ch == '\n') {
     // 如果遇到断行符
     lineNum++;
     cl.add(content.substring(istart, i));
     istart = i + 1;
     w = 0;
    } else {
     // 遇到字符
     w += (int) (Math.ceil(widths[0]));
     // 当长度小于宽度时
     if (w > pageWidth) {
      lineNum++;
      cl.add(content.substring(istart, i));
      istart = i;
      i--;
      w = 0;
     } else {
      if (i == (content.length() - 1)) {
       lineNum++;
       cl.add(content.substring(istart, content.length()));
      }
     }
    }
    if (lineNum == pageLines || i == (content.length() - 1)) {
     contentList.add(cl);
     System.out.println(cl.toString());
     cl = null;
     // 当最后一个字符时的行数
     lines = lineNum;
     lineNum = 0;
    }
   }
   return contentList;
 }