2014-12-29 31 views
1

我一直在使用epublib在android系統加載的網頁視圖ePub文件加載ePub文件。這是我的代碼加載在web視圖Android的

public void getEntireBook(){ 
    Spine spine = book.getSpine(); 
    List<SpineReference> spineList = spine.getSpineReferences() ; 
    int count = spineList.size(); 
    TextView tv=new TextView(getApplicationContext()); 
    tv.setText(Integer.toString(count)); 
    StringBuilder string = new StringBuilder(); 

    for (int i = 0; count > i; i++) { 
     Resource res = spine.getResource(i); 
     string.append(res.getTitle()); 

     RowData row = new RowData(); 
     row.setTitle(string.toString()); 
     row.setResource(spine.getResource(i)); 
     contentDetails.add(row); 

     try { 
      InputStream is = res.getInputStream(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
      try { 
       while ((line =(String) reader.readLine()) != null) { 


       } 

      } catch (IOException e) {e.printStackTrace();} 

      //do something with stream 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     webView.loadData(line, "text/html;charset=UTF-8",null); 
    } 
} 

一些文件被加載罰款從20 MB到70 MB的文件被加載得很好,但上方90 MB的文件是給問題,或者一個空白網頁視圖顯示或屏幕上的文件變黑。

一些的另一個問題是,一些文件有很大的文本,並且有類似圖片,裝飾字體和圖形豐富的內容。當我在webview中加載它們時,會顯示小點,當我放大文本時會散亂。

所以我有兩個問題

  1. 如何呈現一個大的文件像150 MB的文件中的WebView
  2. 如何加載充實圖形內容。

我已經使用每個webview設置像setrenderpriority高等,注入js到webview,但我無法找到解決方案。

回答

1

你應該呈現逐章(分頁)一章。不要一次渲染所有章節,這可能會導致Android出現延遲。

public void pagination (int page){ 
 
     Resource res = spine.getResource(page); 
 
     string.append(res.getTitle()); 
 

 
     RowData row = new RowData(); 
 
     row.setTitle(string.toString()); 
 
     row.setResource(res); 
 
     contentDetails.add(row); 
 

 
     try { 
 
      InputStream is = res.getInputStream(); 
 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
 
      try { 
 
       while ((line =(String) reader.readLine()) != null) { 
 

 

 
       } 
 

 
      } catch (IOException e) {e.printStackTrace();} 
 

 
      //do something with stream 
 
     } catch (IOException e) { 
 
      e.printStackTrace(); 
 
     } 
 
     webView.loadData(line, "text/html;charset=UTF-8",null);      
 
    }