@xiaoyixy
2015-11-09T21:18:59.000000Z
字数 1645
阅读 1810
Hybrid
Ⅰ 设置默认字号大小
如果不加修改,默认情况下 WebKit 呈现的字体为 16 sp (独立尺寸像素)。这个单位可以让 WebView 根据屏幕像素密度和用户喜好调整字体大小。如果想要改变这个默认尺寸,可以使用 setDefaultFontSize() 方法来实现:
WebView WebView = new WebView(this);
WebSettings settings = WebView.getSettings();
settings.setDefaultFontSize(20);
Ⅱ 控制变焦
设置 setBuiltInZoomControls() 方法的值为 false 可防止内置变焦的机制。设置为true 时将允许 setDisplayZoomControls() 方法来显示屏幕缩放控制。 setDefaultZoom(ZoomDensity.FAR)设置一个网页的默认缩放密度。把它的值设置为 FAR 使得它在 100% 时呈现为 240 dpi。设置 setSupportZoom() 将设置 WebView 是否支持使用屏幕缩放控制和手势。
除非应用程序功能需要缩放,否则从用户体验的角度来看,移动应用禁用缩放更符合大多数用户的期望。
WebView WebView = new WebView(this);
WebSettings settings = WebView.getSettings();
settings.setBuiltInZoomControls(false);
settings.setDefaultZoom(ZoomDensity.FAR);
settings.setSupportZoom(false);
Ⅲ 硬件加速
Android 从1.0的版本就开始使用一定形式的硬件加速渲染技术,基本上用于合成窗口。然而,本地窗口的更改由软件完成。从历史上看,Android 浏览器使用一项经优化的渲染技术来最大限度地减少错误,而不是提升渲染的速度。从3.0版本起,Android 为应用程序推出完整的硬件加速技术。默认情况下4.0以下版本的平台不能使用这项功能。Web浏览器本身迁移到一个基于瓦片式的渲染架构,而不是显示列表体系结构,使得其响应更加迅速。
如果希望在移动应用或活动中使用硬件加速,可在 manifest 文件中设置 android:handwareAccelerated="true"。
// enable hardware acceleration using code (>= level 11)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
WebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
settings.setRenderPriority(WebSettings.RenderPriority.HIGH);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
注意:
使用硬件加速有一定的副作用,最重要的是,它增加了一个显著的内存量要求(至少7-8M)。这可能对低端设备产生很大的影响。
鉴于 Android 原生系统如此高度碎片化的特性,你可能会发现使用硬件加速的 WebView 的许多问题。若想有选择性地在 web 视图中关闭硬件加速,可以为整个应用程序或托管 WebView 的应用程序设置 android:handwareAccelerated="false"。也可以通过下面代码实现:
// selectively disable hardware acceleration for WebView
// honeycomb (3.0) and higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
WebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}