2016-11-08 5 views
1

레이아웃에서 텍스트와 그림을 확대/축소하는 방법을 찾고있었습니다. 몇 가지 질문에 따라 웹보기는 쉽게 할 수 있습니다.웹보기를 HTML 리더로 사용할 수 있습니까 (오프라인)?

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 

public class WebViewActivity extends Activity { 

private WebView webView; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.webview); 

    webView = (WebView) findViewById(R.id.webView1); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.loadUrl("http://www.google.com"); 

} 

} 

내가 그래서 난이 경로를 사용 file:/// 대신 http:// 의 사용하려고 : 잠시 후 나는 웹보기에이 코드를 발견 그것의 나를 위해 잘 작동 보인다

file:///sdcard/Android/data/[My App Package Name]/about.html 

을,하지만 난이 몇 가지 심각한 문제.

  1. 내가 사용하고이 경로가 다른 모든 안드로이드 장치에 대한 작품이다 : 여기

    내 문제인가?

  2. 내가 사용하고있는 경로로 처음 실행될 html 파일을 추출하는 방법을 모른다.
  3. 어쨌든 자산에서 파일을로드 할 수 있습니까?
  4. 처음 실행시 파일을 추출하는 소스 코드는 무엇입니까?
  5. html 대신 pdf 또는 doc과 같은 다른 형식을 사용할 수 있습니까? 소스 코드에서 무엇을 변경해야합니까?

나를 도와 주신 여러분 께 감사드립니다. 이 아이디어를 포기하거나 계속해야합니까?

당신은 단지 다음 소스 코드에서 자산 폴더에 파일을 넣어 수

답변

4

이 작업을 수행 :

WebView webView = (WebView)findViewById(R.id.webView1); 
webview.loadUrl("file:///android_assets/file.html"); 

디스플레이 PDF의 경우 :

는 API 레벨이 21 (롤리팝) 안드로이드가 제공하기 때문에 PdfRenderer 클래스 :

// create a new renderer 
PdfRenderer renderer = new PdfRenderer(getSeekableFileDescriptor()); 

// let us just render all pages 
final int pageCount = renderer.getPageCount(); 
for (int i = 0; i < pageCount; i++) { 
    Page page = renderer.openPage(i); 

    // say we render for showing on the screen 
    page.render(mBitmap, null, null, Page.RENDER_MODE_FOR_DISPLAY); 

    // do stuff with the bitmap 

    // close the page 
    page.close(); 
} 

// close the renderer 
renderer.close(); 

이 샘플 how to display PDF document on screen using the PdfRenderer introduced in Android 5.0 Lollipop.

을 보여줍니다 이전의 API를 체크 아웃 AndroidPdfViewer library, 들어

는 API 11에 작동 이상 :

pdfView.fromUri(Uri) 
or 
pdfView.fromFile(File) 
or 
pdfView.fromAsset(String) 
    .pages(0, 2, 1, 3, 3, 3) // all pages are displayed by default 
    .enableSwipe(true) 
    .swipeHorizontal(false) 
    .enableDoubletap(true) 
    .defaultPage(0) 
    .onDraw(onDrawListener) 
    .onLoad(onLoadCompleteListener) 
    .onPageChange(onPageChangeListener) 
    .onPageScroll(onPageScrollListener) 
    .onError(onErrorListener) 
    .enableAnnotationRendering(false) 
    .password(null) 
    .scrollHandle(null) 
    .load(); 
+0

완벽하게 작동하는 앱이 있습니다. – AxelH

+0

오, 그래서 자산에서 파일을로드하기 위해서는 (자산) 대신 (android_assets)를 추가해야합니다. 맞습니까? –

+0

예, 작동해야합니다 : –

0

사용 getExternalFilesDir() 대신의 하드 코딩 경로.

IDE를 사용하여 파일을 에셋에 보관하십시오.

그런 다음 런타임에 해당 파일을 getExternalFilesDir()에 복사하십시오. 그 코드는 여러 번 stackoverflow에 게시되었습니다.

WebView에서 직접 자산에서 파일을로드 할 수 있으므로 파일을 자산에도 남겨 둘 수 있습니다.

+0

나는 안드로이드에서 새로운 코드로 표시 할 수 있습니까? –