Совместимость Canvas clipOutRect в AndroidX

Я недавно сталкивался с унижением 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 ответ

Краткий ответ - нет. Единственное, что связано с Canvas в AndroidX - это файл: https://github.com/aosp-mirror/platform_frameworks_support/blob/androidx-master-dev/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

Другие вопросы по тегам