Совместимость Canvas clipOutRect в AndroidX - PullRequest
0 голосов
/ 23 февраля 2019

Недавно я столкнулся с устаревшей clipRect(Rect,Region.Op), которую я хотел бы использовать с DIFFERENCE.Это было заменено на clipOutRect(Rect) и, таким образом, я реализовал:

@Suppress("DEPRECATION")
fun clipOutRect(canvas: Canvas, rect: Rect) =
    if (SDK_INT >= O) canvas.clipOutRect(rect)
    else canvas.clipRect(rect, DIFFERENCE)

Теперь похоже, что это может быть метод совместимости в AndroidX , но по какой-то причине я не смог понятьгде я мог найти это точно.

Есть ли класс, уже обеспечивающий метод совместимости для clipOutRect(Rect)?

1 Ответ

0 голосов
/ 27 февраля 2019

Краткий ответ - нет.Единственное, что связано с Canvas в AndroidX - это файл: https://github.com/aosp-mirror/platform_frameworks_support/blob/androidx-master-dev/core/core-ktx/src/main/java/androidx/core/graphics/Canvas.kt

Длинный ответ.Прежде всего, Canvas передается для просмотра нативным кодом, поэтому будет неудобно иметь что-то вроде onDrawCompat(canvas: CanvasCompat) в ViewCompat классе.И я думаю, что нет никакой причины делать это вообще.Кроме того, это действительно не тот тип устаревания, о котором вам следует беспокоиться.Например, WifiManager.startScan() помечено

Этот метод устарел на уровне API 28. Возможность приложений для запуска запросов сканирования будет удалена в следующем выпуске.

Это говорит Change this code now, or it will be broken year later

Это не относится к clipRect, оно будет сохранено для обратной совместимости с приложениями, которые никогда не будут обновляться годами или даже десятыми годами.Предупреждение об устаревании для этого похоже на Hey, we have new method with better functionality/name, if you target minimum is API 26 you can use that

...