Я рад, что это сработало. Проблема заключалась в том, что реальное решение не так просто, как просто изменить одну строку (первоначально 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: Все методы, которые используют пользовательские