WebView加載頁面的兩種方式
一、加載網絡頁面
加載網絡頁面,是最簡單的一種方式,只需要傳入http的URL就可以,實現WebView加載網絡頁面
代碼如下圖:
二、加載本地頁面
1、加載assets目錄下的HTML頁面:
加載assets目錄的頁面,大多數可以用來做頁面數據的存儲打包,這樣可以訪問 離線文件,不用去進行網絡請求,可以減少用戶數據流量的使用
示例代碼如下:
//加載assets目錄文件 webView.loadUrl("file:///android_asset/staticHtml.html");
在這里面,解釋一下引號里面每個字段的意思和作用:
file字段,表示讀取本地文件,不讀取網絡文件。
android_asset表示讀取當前應用的assets目錄下的文件
staticHtml.html表示assets目錄下的HTML頁面
2、加載緩存到本地的頁面
加載緩存到本地的頁面,這個主要可以用來做頁面的離線緩存
例如將html文件存儲到本地文件目錄下
//文件存儲的本地文件夾路徑 File filesDir = getFilesDir().getAbsoluteFile(); //本地存儲的文件 File destFile = new File(filesDir, "staticHtmlcopy.html"); //將assets路徑下的文件copy到filesDir路徑下,注:此處也可以通過網絡訪問,對頁面進行存儲 InputStream is = null; try { is = getAssets().open("staticHtml.html"); if (destFile.exists()) { destFile.delete(); } FileOutputStream out = new FileOutputStream(destFile); try { byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = is.read(buffer)) >= 0) { out.write(buffer, 0, bytesRead); } } finally { out.flush(); try { out.getFD().sync(); } catch (IOException e) { } out.close(); } } catch (IOException e) { e.printStackTrace(); } //拼接生成WebView使用的url地址 String url="file://"+destFile.getAbsolutePath(); webView.loadUrl(url);
注:一些網絡上直接抓取的頁面里面一些js可能存在跨域,或者相對路徑的情況,所以最好自己先寫一些簡單的頁面做測試。