2016-11-08 2 views
1

Я искал способ масштабирования текста и изображения в своем макете. в соответствии с некоторыми вопросами веб-представление - это простой способ сделать это. Через некоторое время я нашел этот код для WebView:Можно ли использовать веб-представление в качестве считывателя 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. Могу ли я использовать другие форматы, такие как pdf или doc вместо html? если я не могу, что я должен изменить в исходном коде?

благодарю вас за помощь. Должен ли я отказаться или продолжить эту идею?

ответ

4

Вы можете просто поместить этот файл в папку вашего активов в исходном коде, а затем сделать это:

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

Для отображения PDF:

Поскольку уровень API 21 (Lollipop) Android обеспечивает класс 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

Я новичок в android, вы можете показать его в коде? –

Смежные вопросы