Html5 canvas 在Android浏览器中禁用html5 canas上2d渲染的硬件加速

Html5 canvas 在Android浏览器中禁用html5 canas上2d渲染的硬件加速,html5-canvas,Html5 Canvas,我在android浏览器上执行了javascript html5画布测试以进行评测。 为了在android webbrowser中禁用html5画布上2d渲染的硬件加速,我在android浏览器中配置了标志。(外部/软件包/应用程序/浏览器…) 但是,这种配置似乎不起作用。 有人能给我一些帮助吗?我想你对Android画布和html5画布感到困惑。它们是两种不同的东西。您的代码片段面向android画布。不是Html5。我认为在浏览器上禁用硬件加速的唯一方法是更改浏览器设置。是Chromes

我在android浏览器上执行了javascript html5画布测试以进行评测。
为了在android webbrowser中禁用html5画布上2d渲染的硬件加速,我在android浏览器中配置了标志。(外部/软件包/应用程序/浏览器…)


但是,这种配置似乎不起作用。
有人能给我一些帮助吗?

我想你对Android画布和html5画布感到困惑。它们是两种不同的东西。您的代码片段面向android画布。不是Html5。我认为在浏览器上禁用硬件加速的唯一方法是更改浏览器设置。是Chromes switch的一个示例。

在创建我的视图时,我添加了以下代码:

    private void fixSignatureDoubleLineIssueOnJb(View root) {
    Log.d(TAG, "API level: " + Build.VERSION.SDK_INT);
    if (Build.VERSION.SDK_INT >= 16) {
        try {
            Method method = root.getClass().getMethod("setLayerType", int.class, Paint.class);
            method.invoke(root, 0x01/* View.LAYER_TYPE_SOFTWARE */, null);

            Log.d(TAG, "hardware accelaration disabled");
        } catch (NoSuchMethodException e) {
            Log.e(TAG, "failed to disabled hardware acceleration", e);
        } catch (IllegalArgumentException e) {
            Log.e(TAG, "failed to disabled hardware acceleration", e);
        } catch (IllegalAccessException e) {
            Log.e(TAG, "failed to disabled hardware acceleration", e);
        } catch (InvocationTargetException e) {
            Log.e(TAG, "failed to disabled hardware acceleration", e);
        }
    }
}

请幽默我,但我很好奇为什么你要关闭硬件加速?测试javascript在一个html文件中,在android web浏览器中打开。当我在packages/apps/Browser/AndroidManifest.xml中禁用硬件加速时,一些不使用html5画布的图形渲染是软件渲染(我观察到配置文件),但一些使用html5画布(标记)的2d渲染是硬件加速的。这就是我发布这个问题的原因。无论如何,谢谢你的推荐!
    private void fixSignatureDoubleLineIssueOnJb(View root) {
    Log.d(TAG, "API level: " + Build.VERSION.SDK_INT);
    if (Build.VERSION.SDK_INT >= 16) {
        try {
            Method method = root.getClass().getMethod("setLayerType", int.class, Paint.class);
            method.invoke(root, 0x01/* View.LAYER_TYPE_SOFTWARE */, null);

            Log.d(TAG, "hardware accelaration disabled");
        } catch (NoSuchMethodException e) {
            Log.e(TAG, "failed to disabled hardware acceleration", e);
        } catch (IllegalArgumentException e) {
            Log.e(TAG, "failed to disabled hardware acceleration", e);
        } catch (IllegalAccessException e) {
            Log.e(TAG, "failed to disabled hardware acceleration", e);
        } catch (InvocationTargetException e) {
            Log.e(TAG, "failed to disabled hardware acceleration", e);
        }
    }
}