下面通过一个具体的实例来说明如何使用WebView组件加载HTML代码。
例14.8在Eclips中创建Android项目,名称为14.8,实现应用Web View组件加载使用HTML代码添加的帮助信息。
(1)修改新建项目的res\Iayout目录下的布局文件main.xml,将默认添加的TextView组件删除,然后添加一个WebView组件,关键代码如下:
(2)在MainActivity的onCreate()方法中,首先获取布局管理器中添加的Web View组件,然后创建一个字符串构建器,将要显示的HTML代码放置在该构建器中,最后应用IoadDataWithBaseURLO方法加载构建器中的HTML代码,具体代码如下:
运行本实例,在屏幕上将显示如图14.11所示的由HTML代码指定的帮助信息。
Android的webview加载本地html、本apk内html和远程URL
1. [代码][Java]代码 跳至 [1] [全屏预览]
01 | //打开本包内asset目录下的index.html文件 |
02 |
03 | wView.loadUrl( " file:///android_asset/index.html " ); |
04 |
05 | //打开本地sd卡内的index.html文件 |
06 |
07 | wView.loadUrl( "content://com.android.htmlfileprovider/sdcard/index.html" ); |
08 |
09 | //打开指定URL的html文件 |
10 |
11 | wView.loadUrl( " http://m.oschina.net" ); |
android客户端常会调用到html页面,给webview页面适配android凌乱的设备带来很大的困难。
可以找到的方法是通过ZoomDensity.setDefaultZoom根据分辨率480宽度为基准缩放。
不过ZoomDensity.setDefaultZoom在2.0以下的平台是无法调用的,需要自己反射调用。
即使是ZoomDensity.setDefaultZoom设置了缩放,但还是会在很多设备无效。经过摸索还需做一些修改:
1,页面head添加
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
2,设置字体也按480基准缩放。
下面是代码:
Java代码
private void setZoom(WebSettings webSettings) {
int screenDensity = getResources().getDisplayMetrics().densityDpi;
String zd = "FAR";
switch (screenDensity) {
case DisplayMetrics.DENSITY_LOW:
zd = "CLOSE";
break;
case DisplayMetrics.DENSITY_MEDIUM:
zd = "MEDIUM";
break;
}
Class<?> zoomDensityClass = null;
Enum<?> zoomDensity = null;
try {
if (zoomDensityClass == null) {
zoomDensityClass = Class.forName("android.webkit.WebSettings$ZoomDensity");
}
if (zoomDensity == null) {
zoomDensity = (Enum<?>) Enum.valueOf((Class) zoomDensityClass,zd);
}
Method method = WebSettings.class.getDeclaredMethod( "setDefaultZoom", new Class<?>[] { zoomDensityClass });
if(method!=null){
method.invoke(webSettings, zoomDensity);
}
method = WebSettings.class.getDeclaredMethod( "setTextZoom", new Class<?>[] { int.class });
if(method!=null){
method.invoke(webSettings, 100 * getWindowManager().getDefaultDisplay().getWidth() / 480);
}
} catch (Exception e) {
Log.e(TAG, e.getMessage());
return;
}
}
android客户端常会调用到html页面,给webview页面适配android凌乱的设备带来很大的困难。
可以找到的方法是通过ZoomDensity.setDefaultZoom根据分辨率480宽度为基准缩放。
不过ZoomDensity.setDefaultZoom在2.0以下的平台是无法调用的,需要自己反射调用。
即使是ZoomDensity.setDefaultZoom设置了缩放,但还是会在很多设备无效。经过摸索还需做一些修改:
1,页面head添加
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
2,设置字体也按480基准缩放。
下面是代码:
Java代码
private void setZoom(WebSettings webSettings) {
int screenDensity = getResources().getDisplayMetrics().densityDpi;
String zd = "FAR";
switch (screenDensity) {
case DisplayMetrics.DENSITY_LOW:
zd = "CLOSE";
break;
case DisplayMetrics.DENSITY_MEDIUM:
zd = "MEDIUM";
break;
}
Class<?> zoomDensityClass = null;
Enum<?> zoomDensity = null;
try {
if (zoomDensityClass == null) {
zoomDensityClass = Class.forName("android.webkit.WebSettings$ZoomDensity");
}
if (zoomDensity == null) {
zoomDensity = (Enum<?>) Enum.valueOf((Class) zoomDensityClass,zd);
}
Method method = WebSettings.class.getDeclaredMethod( "setDefaultZoom", new Class<?>[] { zoomDensityClass });
if(method!=null){
method.invoke(webSettings, zoomDensity);
}
method = WebSettings.class.getDeclaredMethod( "setTextZoom", new Class<?>[] { int.class });
if(method!=null){
method.invoke(webSettings, 100 * getWindowManager().getDefaultDisplay().getWidth() / 480);
}
} catch (Exception e) {
Log.e(TAG, e.getMessage());
return;
}
}