Ответ 1
Теперь матрица обрабатывается представлением, а не холстом. Я, к сожалению, не могу объяснить вам решение Google по этому вопросу, но вы должны иметь возможность воспроизвести то же самое с помощью двух способов.
У меня есть следующий фрагмент кода, который преобразует набор границ, используя текущую матрицу преобразования 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) способ сделать это.
Теперь матрица обрабатывается представлением, а не холстом. Я, к сожалению, не могу объяснить вам решение Google по этому вопросу, но вы должны иметь возможность воспроизвести то же самое с помощью двух способов.
Я думаю, что из-за проблемы с getMatrix, когда включена функция HardwareAcceleration, они не рекомендовали ее, поскольку kouray сказал, что теперь матрица обрабатывается представлением.
Если у вас нет доступа к представлению:
Чтобы обойти эту проблему, в большинстве ситуаций вы можете применять любые преобразования, используя canvas.scale(), canvas.translate() и т.д., вместо того, чтобы извлекать матрицу, изменяя ее, а затем снова устанавливая матрицу.
Из проблемы в Google с помощью getMatrix, когда включена функция HardwareAcceleration, как указано Sandeep.