Я рад, что это сработало. Проблема заключалась в том, что реальное решение не так просто, как просто изменить одну строку (первоначально clipRect с Op.Replace), обернув ее еще в 2 строки (сохранить / восстановить), но вы должны понимать, что происходит в настоящее время. Вызов clipRect () влияет на все методы рисования, вызываемые после этого, поэтому вы должны размещать вызовы сохранения / восстановления в правильных местах. Важным моментом является то, что вызов метода restore () ИЗМЕНЯЕТ clipRect к исходному значению (к значению во время вызова save ()). Наверное, поэтому у тебя была проблема. Я также обновил ответ (+ вероятная причина производительности).

работаю над библиотекой, в которой много рисунков на холсте вместо нескольких видов (доступно

Вот).Проблема

Работая над тем, чтобы улучшить его и сделать так, чтобы оно соответствовало нашим потребностям приложения (требуется некоторая настройка), я заметил, что некоторые строки помечены как устаревшие:

Дело в том, что я не думаю, что есть хороший кандидат, чтобы заменить эту строку кода более новыми API

canvas.clipRect(0f, mHeaderHeight + mHeaderRowPadding * 2, mHeaderColumnWidth, height.toFloat(), Region.Op.REPLACE)

Что я нашел

Смотря на

документывот что написано:Этот метод устарел на уровне API 26. Значения Region.Op, кроме INTERSECT и DIFFERENCE, могут расширять клип. API обрезки холста предназначены только для расширения клипа в результате операции восстановления. Это позволяет родителю представления обрезать холст, чтобы четко определить максимальную область рисования его дочерних элементов. Рекомендуемые альтернативные вызовы: clipRect (RectF) и clipOutRect (RectF);

Поэтому я попытался использовать любую из этих функций, но обе они вызвали проблемы с чертежом, как это было раньше.

Глядя на устаревание, кажется, что сама функция помечена, но не Region.Op.REPLACE:

Так что, может быть, у него нет альтернативы ...

Вопросы

Какова лучшая альтернатива в этом случае?Почему именно это устарело?В отличие от некоторых устаревших функций, я предполагаю, что эта функция должна быть безопасной для использования в случае, если я не могу найти альтернативу, верно?1: Все методы, которые используют пользовательские

Ответы на вопрос(1)

Ваш ответ на вопрос