26

我有以下代码片段,它使用画布的当前转换矩阵转换一组边界。

    final RectF bounds = renderer.computeBounds
    activeCanvas.getMatrix().mapRect(result, bounds);
    return bounds;

但是,对于最新的 API 级别 (16),我收到一条警告说明

The method getMatrix() from the type Canvas is deprecated

正如API 16 Diff Specification所确认的那样。

这很好,但是Canvas.getMatrix()上的当前文档没有提到弃用,也没有提供替代方案。作为一种解决方法,我现在只是取消了这个警告,但我真的很想知道新的和改进的(tm)方法是什么样的。

4

3 回答 3

9

我认为由于启用 hardwareAcceleration 时 getMatrix 的问题,他们弃用了它,正如 kouray 所说,现在矩阵由视图处理。

于 2012-11-09T12:43:15.077 回答
9

矩阵现在由视图而不是画布处理。不幸的是,我无法向您解释 Google 对此的决定,但您应该能够通过 2 种方式重现完全相同的内容。

于 2012-11-06T01:02:50.627 回答
4

如果您无权访问视图:

要解决此问题,在大多数情况下,您可以使用 canvas.scale()、canvas.translate() 等应用任何转换,而不是检索矩阵、修改它然后再次设置矩阵。

根据Sandeep 所引用的,当启用 hardwareAcceleration 时,来自 Google 的 getMatrix 问题。

于 2015-04-13T17:20:09.673 回答