安卓如何使用WebView组件加载HTML代码

 下面通过一个具体的实例来说明如何使用WebView组件加载HTML代码。
    例14.8在Eclips中创建Android项目,名称为14.8,实现应用Web View组件加载使用HTML代码添加的帮助信息。
    (1)修改新建项目的res\Iayout目录下的布局文件main.xml,将默认添加的TextView组件删除,然后添加一个WebView组件,关键代码如下:

    如何使用WebView组件加载HTML代码
    (2)在MainActivity的onCreate()方法中,首先获取布局管理器中添加的Web View组件,然后创建一个字符串构建器,将要显示的HTML代码放置在该构建器中,最后应用IoadDataWithBaseURLO方法加载构建器中的HTML代码,具体代码如下:

   如何使用WebView组件加载HTML代码
    运行本实例,在屏幕上将显示如图14.11所示的由HTML代码指定的帮助信息。

                          如何使用WebView组件加载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");
webview页面随设备分辨率缩放


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的webview加载本地html、本apk内html和远程URL
Android的webview加载本地html、本apk内html和远程URL

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;  
}  
   }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值