-1

我需要在我的一个 WebView 上启用硬件加速。到目前为止,我发现如果我使用 11 或 13(分别为 Android 3.0 和 3.2)的目标 API 构建我的项目,硬件加速就会启用并且一切都很好。但奇怪的是,当我使用 API 17 或 18 构建项目时,由于某种原因,我所有打开硬件加速的努力都被忽略了。

到目前为止,我已经尝试过:

1)android:hardwareAccelerated="true"在清单中的我的标签中设置

2) 相同,但对于包含 WebView 的活动

3)我的Activity的onCreate中的以下代码(在设置内容视图之前):

getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

4)相同,但使用getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

在所有情况下,webView.isHardwareAccelerated()返回 false,即使它正在工作。

请帮忙,因为这个而被困在 API 13 上会很蹩脚......

4

1 回答 1

4

在 API 18 上测试:

Runnable通过将 a 发布到 来执行检查WebView

WebView webView = (WebView) findViewById(R.id.webview_id);

// Shows: "Is hardware accelerated? false"
// Toast.makeText(YourActivity.this, "Is hardware accelerated? " + 
                                             // webView.isHardwareAccelerated(),
                                                 // Toast.LENGTH_LONG).show();

webView.post(new Runnable() {

    @Override
    public void run() {
        Shows: "Is hardware accelerated? true"
        Toast.makeText(YourActivity.this, "Is hardware accelerated? " + 
                                              webView.isHardwareAccelerated(),
                                                  Toast.LENGTH_LONG).show();

        if (webView.isHardwareAccelerated()) {
            // isAccelerated();
        } else {
            // isNotAccelerated();
        }
    }
});

来自硬件加速的资源页面:

如果您的 Target API 级别 >=14,则默认启用硬件加速,但也可以显式启用。

如果您显示的图像仍然像素化,请尝试设置:

webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

看看图像的像素化是否变得更好。

考虑阅读有关硬件加速的资源页面。

于 2013-09-02T07:06:53.520 回答