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

 我来答
鈾氶瓏鈾
2016-11-30 · 知道合伙人软件行家
鈾氶瓏鈾
知道合伙人软件行家
采纳数:718 获赞数:1336

向TA提问 私信TA
展开全部

1)修改新建项目的res\Iayout目录下的布局文件main.xml,将默认添加的TextView组件删除,然后添加一个WebView组件

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

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;  }     }
育知同创教育
2016-11-23 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
简单处理方式:
public class WebViewDemo extends Activity {
private WebView mWebView;
private Handler mHandler = new Handler();

public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.webviewdemo);
mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave()");
}
});
}
}, "demo");
mWebView.loadUrl("file:///android_asset/demo.html");
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式