2014-12-29 9 views
1

나는 webview에서 epub 파일을로드하기 위해 안드로이드에서 epublib을 사용 해왔다. 이webView Android에 epub 파일로드하기

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); 
    } 
} 

일부 파일이 잘로드하지만 90메가바이트 위의 파일이 문제 빈 웹보기 중 하나가 표시되거나 화면을주는 미세 20메가바이트 70 MB의 파일을로드하는 파일을로드 할 수 내 코드입니다 검게된다.

일부 다른 파일에는 큰 텍스트가 있고 그림, 장식 글꼴과 같은 풍부한 그래픽 콘텐츠가 포함되어 있습니다. webview에서로드 할 때 작은 점이 표시되고 텍스트를 확대하면 흩어집니다.

그래서 나는 두 가지 질문 풍부하게 그래픽 콘텐츠를로드하는 방법 웹뷰

  • 150 메가 바이트 파일 같은 큰 파일을 렌더링하는 방법
    1. 있습니다.

    그리고 나는 webview에 js를 주입하는 등, setrenderpriority high와 같은 모든 webview 설정을 사용했지만 솔루션을 찾을 수 없었습니다.

  • 답변

    1

    챕터 (페이지 매김)별로 렌더링해야합니다. 한 번에 모든 챕터를 렌더링하지 마십시오, 안드로이드에 laggy 만들 수 있습니다.

    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);      
     
        }