[关闭]
@xiaoyixy 2015-11-09T13:18:59.000000Z 字数 1645 阅读 1685

Hybrid 下的多项权限设置(二)

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);
    }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注