Подтвердить что ты не робот

Какова альтернатива устаревшему Canvas.getMatrix()?

У меня есть следующий фрагмент кода, который преобразует набор границ, используя текущую матрицу преобразования canvas.

    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) способ сделать это.

4b9b3361

Ответ 1

Теперь матрица обрабатывается представлением, а не холстом. Я, к сожалению, не могу объяснить вам решение Google по этому вопросу, но вы должны иметь возможность воспроизвести то же самое с помощью двух способов.

Ответ 3

Если у вас нет доступа к представлению:

Чтобы обойти эту проблему, в большинстве ситуаций вы можете применять любые преобразования, используя canvas.scale(), canvas.translate() и т.д., вместо того, чтобы извлекать матрицу, изменяя ее, а затем снова устанавливая матрицу.

Из проблемы в Google с помощью getMatrix, когда включена функция HardwareAcceleration, как указано Sandeep.