最近项目中需要把一部分css/image 文件资源打包到apk中,然后在WebView中去加载引用css/image文件,加快页面访问效率。
首先看看项目的目录结构,如下图所示:
这里把css/image 文件放到了assets 目录下,然后WebView加载Html内容的时候,给它指定一个根路径就OK了。代码如下:
StringBuffer sb = new StringBuffer();
sb.append("<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"css/mystyle.css\" ></head>");
sb.append("<body>");
sb.append("<h1>我通过外部样式表进行格式化。</h1><p>我也一样!</p>");
sb.append("<p>一幅图像:<img src=\"img/eg_mouse.jpg\" width=\"128\" height=\"128\" /></p>");
sb.append("</body></html>");
mWebView.loadDataWithBaseURL("file:///android_asset/", sb.toString(), "text/html","utf-8", null);
这里file:///android_asset/ 代表的就是assets所在的路径。
-----------------------------------------------------------------------
同理,如果要加载SD卡上的css/image 文件,可以这样做:
basePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/webview_test/";
File dir = new File(basePath);
if(dir!=null && !dir.exists()){
dir.mkdirs();
Log.e(TAG, "mkdirs:"+basePath);
}
然后在WebView中指定baseUrl即可,如下:
StringBuffer sb = new StringBuffer();
sb.append("<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"css/mystyle.css\" ></head>");
sb.append("<body>");
sb.append("<h1>我通过外部样式表进行格式化。</h1><p>我也一样!</p>");
sb.append("<p>一幅图像:<img src=\"img/eg_mouse.jpg\" width=\"128\" height=\"128\" /></p>");
sb.append("<p>顺丰速递:<img src=\"http://s.dianhua.cn/logo/100100/c1/f/c1f61d4a6c88be79c0313a867d089113058fb961.png!100100\" width=\"250\" height=\"250\" /></p>");
sb.append("</body></html>");
mWebView.loadDataWithBaseURL("file:///"+basePath, sb.toString(), "text/html","utf-8", null);
运行,同样可以正确显示SD卡上的 css样式和图片