2011-01-31 19 views
40

Ho un'app per Android che visualizza un fumetto. Per utilizzare i controlli dello zoom incorporati, sto caricando le immagini in un WebView in questo modo:Caricamento di una risorsa Android in una WebView

webView.loadUrl("file:///android_asset/page1.jpg"); 

Questo sta lavorando bene, però, dal momento che le immagini si trovano nella cartella attivi, non vengono compresso che rende il mio .apk enorme. Mi stavo chiedendo come fare riferimento a file di risorse (dalla cartella res/drawable) con un percorso di file come ho fatto sopra con le risorse. Qualcuno sa come sarebbe il percorso? Ho provato cose come "file:///res/drawable/pagetitle.jpg" senza successo. Grazie per l'aiuto.


Aggiornamento:

ho scoperto che "file:///android_res/drawable/page1.jpg" era il percorso che stavo cercando.

+6

Non ho proprio la tua idea di comprimere ulteriormente le immagini jpg. Sono già compressi! Inoltre, anche le immagini nella cartella res non vengono compresse dagli strumenti di build di Android, perché gli strumenti sono intelligenti ed evitano di comprimere le immagini jpg/png due volte, il che non ha senso. –

+0

Non penso che esista un altro modo diretto. Ma puoi provare a usare [loadData] (http://developer.android.com/reference/android/webkit/WebView.html#loadData%28java.lang.String,%20java.lang.String,%20java.lang.String % 29) metodo. – the100rabh

+0

@PointerNull La ricompressione del PNG può avere molto senso, vedere http://addyosmani.com/blog/image-optimization-tools/ - ricomprimere nuovamente il JPG in perdita deve essere evitato in tutte le circostanze a meno che non si considerino i manufatti come arte moderna. .. – Philzen

risposta

19

da this site

utilizzando l'ID risorsa, il formato è:

"android.resource://[package]/[res id]" 

Uri path = Uri.parse("android.resource://com.androidbook.samplevideo/" + R.raw.myvideo); 

o, utilizzando la sottodirectory delle risorse (tipo) e il nome di risorsa (nome del file senza estensione), il formato è:

"android.resource://[package]/[res type]/[res name]" 

Uri path = Uri.parse("android.resource://com.androidbook.samplevideo/raw/myvideo"); 
+1

Ho trovato una soluzione diversa (vedere l'aggiornamento) e non l'ho ancora provata, ma grazie per la risposta. – Amplify91

+2

L'uso di 'android.resource: //com.androidbook.samplevideo/" + R.raw.myvideo' con 'webView.loadUrl' sembra non funzionare. –

+12

usa' file: /// android_res/raw/myvideo .mp4' per webview. –

6

ho anche dovuto usare loadDataWithBaseURL invece di semplicemente loadData per ottenere il file:///android_res/drawable/page1.jpg al lavoro.

+0

Questo non funziona per me su dispositivi 2.1 ... –

+0

Questo ha funzionato per me dal 2.3 in poi. – greg7gkb

+0

farebbe leva su altri qualificatori come -xhdpi ecc.? – urSus

Problemi correlati