2011-01-31 16 views
40

Mam aplikację na Androida, która wyświetla komiks. Aby skorzystać z wbudowanych sterujących powiększeniem, wczytuję zdjęć w WebView tak:Ładowanie zasobu Androida do przeglądarki internetowej

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

To działa dobrze, jednak, ponieważ obrazy są w folderze aktywów, nie są one skompresowany, co sprawia, że ​​mój telefon jest ogromny. Zastanawiałem się, jak odwoływać się do plików zasobów (z folderu res/drawable) ze ścieżką do pliku, tak jak to zrobiłem powyżej z zasobami. Czy ktoś wie, jak ta ścieżka wyglądałaby? Próbowałem rzeczy takie jak "file:///res/drawable/pagetitle.jpg" bez powodzenia. Dzięki za pomoc.


Aktualizacja:

stwierdziliśmy, że "file:///android_res/drawable/page1.jpg" była droga, którą szukałem.

+6

Po prostu nie mam pomysłu na dalsze kompresowanie obrazów jpg. Są już skompresowane! Ponadto, obrazy w folderze res również nie są kompresowane przez narzędzia do budowania Androida, ponieważ narzędzia są sprytne i unikają kompresji obrazów jpg/png dwa razy, co nie ma sensu. –

+0

Nie sądzę, że istnieje jakakolwiek inna bezpośrednia droga. Ale możesz spróbować użyć [loadData] (http://developer.android.com/reference/android/webkit/WebView.html#loadData%28java.lang.String,%20java.lang.String,%20java.lang.String % 29). – the100rabh

+0

Rekompresja PNG w formacie PNG może mieć wiele sensu, patrz http://addyosmani.com/blog/image-optimization-tools/ - Ponowne kompresowanie stratnego JPG należy unikać w każdych okolicznościach, chyba że uznamy, że artefakty są sztuką nowoczesną. .. – Philzen

Odpowiedz

19

z this site

użyciu identyfikatora zasobów, format jest:

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

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

lub korzystając z podkatalogu zasobów (typ) i nazwę zasobu (nazwa pliku bez rozszerzenia), format jest:

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

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

Znalazłem inne rozwiązanie (zobacz aktualizację) i nie próbowałem tego, ale dziękuję za odpowiedź. – Amplify91

+2

Używanie 'android.resource: //com.androidbook.samplevideo/" + R.raw.myvideo' z 'webView.loadUrl' nie działa. –

+12

użyj' file: /// android_res/raw/myvideo .mp4' dla webview. –

6

Musiałem też użyć loadDataWithBaseURL zamiast zwykłego loadData, aby zadziałał file:///android_res/drawable/page1.jpg.

+0

To nie działa dla mnie na urządzeniach 2.1 ... –

+0

To działało dla mnie na 2.3 i wzwyż – greg7gkb

+0

czy to wpłynęłoby na inne kwalifikatory jako -xhdpi itp? – urSus

Powiązane problemy